Envoyé par : n3k0
Date : 24/02/2008 17:03
Bonjour, le sujet n'est pas forcément clair mais je ne sais pas comment le rendre plus clair.
Dans le cadre de la création d'une extension pour Firefox, qui permet d'afficher des widgets, installés en local, sur toutes pages visitées, j'ai à parser un fichier XML en local.
Mon problème vient des données à l'intérieur du fichier XML. Pour être plus clair:
Fichier XML:
<?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="xmltest" render_inline="optional" height="136" scaling="false"> </ModulePrefs> <UserPref name="color" datatype="enum" default_value="blue" display_name="Couleur"> <EnumValue value="blue" display_value="Bleu"/> <EnumValue value="green" display_value="Vert"/> <EnumValue value="orange" display_value="Orange"/> <EnumValue value="pink" display_value="Rose"/> <EnumValue value="purple" display_value="Violet"/> <EnumValue value="red" display_value="Rouge"/> <EnumValue value="yellow" display_value="Jaune"/> </UserPref> <Content type="html"> <![CDATA[ <img src="projet-mois-jours-date.png" /> ]]> </Content> </Module>
La partie
<Content type="html"> <![CDATA[ <img src="projet-mois-jours-date.png" /> ]]> </Content>
Est celle qui nous intéresse ici puisque c'est celle qui va être affichée, et c'est surtout celle qui fait référence à un fichier, ici une image.
Lorsque je clique sur le bouton que j'ai rajouté dans le menu de Firefox pour lancer mon extension, apparait alors un élément créé dans mon fichier Javascript. J'insère alors dans cet élément ce qui est contenu entre les balises <Content> du fichier XML. Devrait alors apparaitre dans l'élément l'image " projet-mois-jours-date.png " qui est dans le même répertoire que le fichier XML.
Voilà comment je parse le fichier XML et que j'utilise ce qui en ressort:
var leXML = openDocument("chrome://exemple/content/xmltest.xml"); function openDocument(url) { var req; var result = null; req = new XMLHttpRequest(); try { req.open("GET", url, false); req.send(null); result = req.responseXML; } catch (e) { alert(e); } return result; } creationBox(); // cette fonction ne contient que des content.document.createElement() et des addEventListenet() et sert seulement à créer la box dans laquelle sera affiché le widget afficher(leXML); function afficher(noeud) { if (noeud.nodeName == "ModulePrefs") { //Action à faire si on est dans la balise <ModulePrefs> } if (noeud.nodeName == "UserPref") { //Action à faire si on est dans la balise <UserPref> } if(noeud.nodeName == "Content") { if (noeud.hasChildNodes) { var contenu = noeud.firstChild; // on met dans contenu ce qui est dans la balise <Content> if (contenu.nodeValue != null) { content.document.getElementById('contenuWidget').innerHTML = contenu.nodeValue; //contenuWidget est un DIV de la box créée grace à creationBox, là on y place ce qui est dans contenu } } } if (noeud.hasChildNodes) { var fils = noeud.firstChild; while (fils) { afficher(fils); fils = fils.nextSibling; } } }
Or, étant sur internet à ce moment, imaginons que je sois sur http://www.google.fr, l'extension essaye alors de charger l'image " http://www.google.fr/projet-mois-jours-date.png " au lieu de " cheminDeMonFichierXMLEnLocal/projet-mois-jours-date.png "
Ma question est donc: Est-il possible de forcer mon extension à aller chercher les fichiers " pointé " en local et non sur le domaine sur lequel je suis actuellement en train de naviguer ?
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.