2011-04-07 7 views
4

Je dois créer un projet pour travailler en utilisant HTML5/CSS3/JavaScript et en utilisant XML comme fournisseur de données. Les exigences stipulent qu'il doit être compatible avec Internet Explorer, Firefox, Safari et Chrome. Je suis en train de développer dans Firefox, donc ça marche très bien. Safari fonctionne comme un régal, et heureusement, il fonctionne parfaitement dans le nouveau IE9. Je n'ai que des problèmes pour le faire fonctionner dans Chrome. Étant donné que Chrome semble prendre en charge un grand nombre des nouvelles fonctionnalités HTML5/CSS3, il ne devrait pas être trop difficile de le faire tourner dans ce navigateur. Le seul problème est qu'il refuse de charger le fichier XML, et puisque cela est requis dès le départ, tout ne se chargera pas. Après avoir fait quelques recherches, j'ai trouvé des messages indiquant que Chrome ne vous permet pas de charger des fichiers XML locaux. Il devrait fonctionner hors ligne sans utiliser Apache ou quoi que ce soit, alors est-il possible de le faire fonctionner?Chargement du fichier XML local dans Chrome

Le bout de code où je charge mon XML en fonction du navigateur utilisé:

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ 
    // INTERNET EXPLORER 
     xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
     try { 
      xmlDoc.async="true"; 
      xmlDoc.load("exercise1.xml"); 
     } catch(ex) { 
      alert("exception"); 
      alert(ex.message); 
     } 
    }else if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
    // MOZILLA FIREFOX 
     // load xml file 
     xmlDoc=loadXMLDoc("exercise1.xml"); 
    }else if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
     // GOOGLE CHROME 
     // load xml file 
     // ???????? 
    }else if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
     // OPERA 
     alert("Opera is not supported as of now"); 
    }else if (browser.toLowerCase().indexOf('safari') > 0){ 
    // APPLE SAFARI 
     // load xml file 
     xmlDoc=loadXMLDoc("exercise1.xml"); 
    } else { 
    // OTHER BROWSERS 
     // load xml file 
     xmlDoc=loadXMLDoc("exercise1.xml"); 
    } 

utiliser Firefox et Safari un JavaScript externe pour charger le XML. Je ne pense pas qu'il soit vraiment nécessaire de publier ce code ici, car il fonctionne parfaitement bien dans ces navigateurs.

Peut-être que je l'ai oublié quelque chose simple, mais je l'ai fait un peu juste de googler et essayé un code trouvé ici sur Stackoverflow, et je ne peux toujours pas à travailler ..

Répondre

2

Vous pouvez charger un fichier XML dans Chrome en utilisant XMLHttpRequest comme ceci: (testé sur Chrome 12.0.742.112).

function readxml() 
    { 
     xmlHttp = new window.XMLHttpRequest(); 
     xmlHttp.open("GET","test.xml",false); 
     xmlHttp.send(null); 
     xmlDoc = xmlHttp.responseXML.documentElement; 
    } 

Ceci est le xmlDoc obtenu dans les outils de développement de Chrome.

readxml() result

Assurez-vous d'avoir un document XML valide sur le serveur.

<?xml version='1.0'?> 

doit être sur la première ligne de XML et également vérifier qu'il n'y a pas d'espaces avant la balise.

+1

Vous aurez également besoin de l'option --allow-file-access-from-files lors de l'exécution de Chrome pour que cela fonctionne. –

Questions connexes