2009-12-27 6 views
0

J'ai besoin d'aide pour faire fonctionner le fichier dans Firefox: J'ai essayé d'adapter les scripts pour que mon fichier fonctionne à la fois dans IE et Firefox mais jusqu'à présent cela ne fonctionne que dans IE. (Le fichier peut être testé à http://www.eyle.org/crosstest.html - tapez simplement le mot Mike dans la zone de texte en utilisant IE (ne fonctionne pas dans Firefox) le document HTML est .La:Support de cross-browser XML

<!DOCTYPE html PUBLIC 
    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Untitled Document</title> 
    <script type="text/javascript"> 
     var xmlDoc; 
     //loads xml using either IE or firefox 
     function loadXmlDoc() 
     { 
      //test for IE 
      if(window.ActiveXObject) 
      { 
       xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
       xmlDoc.async = false; 
       xmlDoc.load("books2.xml"); 
      } 

      //test for Firefox 
      else if(document.implementation && document.implementation.createDocument) 
      { 
       xmlDoc = document.implementation.createDocument("","",null); 
       xmlDoc.load("books2.xml"); 
      } 
      //if neither 
      else 
      { 
       document.write("xml file did not load"); 
      } 
     } 

     //window.onload = loadXmlDoc(); 
     var subject; 
     //getDetails adds value of txtField to var subject in outputgroup(subject) 
     function getDetails() 
     { 
      //either this or window.onload = loadXmlDoc is needed 
      loadXmlDoc(); 
      var subject = document.getElementById("txtField1").value; 
      function outputgroup(subject) 
      { 
       var xslt = new ActiveXObject("Msxml2.XSLTemplate"); 
       var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument"); 
       var xslProc; 
       xslDoc.async = false; 
       xslDoc.resolveExternals = false; 
       xslDoc.load("contains3books.xsl"); 
       xslt.stylesheet = xslDoc; 
       xslProc = xslt.createProcessor(); 
       xslProc.input = xmlDoc; 
       xslProc.addParameter("subj", subject); 
       xslProc.transform(); 
       document.write(xslProc.output); 
      } 
      outputgroup(subject); 
     } 

    </script> 
</head> 

<body> 
    <input type="text" id="txtField1"> 
    <input type="submit" onClick="getDetails(); return false"> 
</body> 
</html> 

Le fichier comprend Books2.xml et contains3books. xsl (J'ai mis le code pour ces fichiers à ... ww.eyle.org/books2.xml ... ww.eyle.org/contains3books.xsl) (NB: remplacez ... ww par http: // www)

+0

Vérifiez votre JavaScript FF console d'erreur, vous travaillez toujours avec le MS spécifique 'ActiveXObject' dans outputgroup(). –

+0

Vous pouvez utiliser Sarde http://dev.abiss.gr/sarissa/ (ou d'autres bibliothèques JavaScript) qui gère toutes les vérifications/différences entre navigateurs et vous fournir une API abstraite. Sarissa est spécialement conçu pour gérer les choses XML/XSLT/XPATH. –

Répondre

0

Votre fonction outputgroup utilise une création de ActiveXObject pour créer un xslt c'est IE spécifique

Pour mozilla utilisation XSLTProcessor();

par exemple pour Firefox

var processor = new XSLTProcessor(); //create object 

xmlDoc = document.implementation.createDocument("","",null); 
xmlDoc.load("books2.xml"); 

xslDoc.load("contains3books.xsl"); 
xslt.stylesheet = xslDoc; 
processor.importStylesheet(xslDoc);//import a stylesheet 

var output = processor.transformToFragment(xmlDoc); 
+0

Merci pour le code proposé, mais je ne suis pas sûr de savoir comment utiliser ceci: essayé d'ajouter à // test pour Firefox else if (document.implementation && document.implementation.createDocument) { xmlDoc = document.implementation .createDocument ("", "", null); xmlDoc.load ("books2.xml"); } Cela n'a pas essayé, y compris à l'intérieur de la fonction outputgroup (sujet) {... ...} Encore une fois pas de joie. Puis demandé à propos de votre var output = processor.transformToFragment (xmlDoc); La sortie var ne semble pas être utilisée nulle part. Donc, je veux toujours que mon fichier fonctionne à la fois dans IE et Firefox .. aide supplémentaire s'il vous plaît – 1anthony1