Salut,
Je cherche à lire un fichier XML pour ressortir les valeurs dans un tableau.
Rien de difficile jusqu'ici.
J'ai une fonction servant à lire le XML
Cette fonction est appelée lors du clic sur un lien (onclick).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 /** * Fonction de manipulation XML en Javascript * * @param String url : URL du fichier XML * @param String handler : Fonction qui traitera le flux XML **/ function loadXML(url,handler) { //Utilise la technique standard du DOM Niveau 2, si elle est supportée if( document.implementation && document.implementation.createDocument ) { //Crée un nouvel objet document var xmldoc = document.implementation.createDocument( "", "", null ); //Spécifie ce qui doit arriver après la fin du chargement xmldoc.onload = function() { handler(xmldoc, url); } //ainsi que l'url à charger xmldoc.load(url); //Commence le chargement } //Sinon, utilise l'API propriétaire Microsoft pour Internet Explorer else if( window.ActiveXObject ) { var xmldoc = new ActiveXObject( "Micorosft.XMLDOM" ); //Crée doc xmldoc.onreadystatechange = function() { //Spécifie onload if( xmldoc.readyState == 4 ) handler(xmldoc); } xmldoc.load(url); } }
Le-dit lien ayant été généré dynamiquement, et IE supportant mal les
je suis obligé de faire un appendChild d'abord pour ajouter le lien dans ma page, avant de modifier son onclick comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 a.setAttribute('onclick','loadXML("toto","tutu")');
La fonction listeRubriques, elle, sert à modifier le contenu de la table "tableRubriques", qui au départ ressemble à ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.getElementById('lnk' + unId).onclick = function(){loadXML("pages/rubriques.xml", listeRubriques);}
L'id est sur le tbody car IE en rajoute un de manière transparente, et si on laisse l'id sur la table ça provoque des erreurs sous IE.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5<table> <tbody id="tableRubriques"> </tbody> </table>
Voici listeRubriques:
Elle tourne parfaitement bien sous ffx3, mais pas sous IE7 ou j'obtiens l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 /** * Construit un tableau HTML des rubriques * * @param xmldoc : Objet xmldoc renvoyé par xmlLoad() **/ function listeRubriques( xmldoc ) { table = document.getElementById('tableRubriques'); //Trouve tous les marqueurs rub du document xmldoc var rubriques = xmldoc.getElementsByTagName("rub"); //Boucle à travers les marqueurs Rub for( var i = 0 ; i < rubriques.length ; i ++ ) { var rub = rubriques[i]; if( rub.getAttribute("nom") ) { var nom = rub.getAttribute("nom"); var row = document.createElement( "tr" ); var cell = document.createElement( "td" ); cell.appendChild(document.createTextNode(nom)); row.appendChild(cell); table.appendChild(row); } } }
Le seul composant activeX que je vois ici serait donc "xmldoc", résultat de "loadXml()" passé en paramètre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part un composant ActiveX ne peut pas créer d'objet.
Je n'ai jamais rencontré ce problème et je sèche complètement.
Des idées ?
D'avance merci,
*.Har(d)t
EDIT:
j'ai trouvé une erreur:
au lieu de
Code : Sélectionner tout - Visualiser dans une fenêtre à part var xmldoc = new ActiveXObject( "Micorosft.XMLDOM" );
Corrigé, mais maintenant j'ai une nouvelle erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part var xmldoc = new ActiveXObject( "Microsoft.XMLDOM" );
"Cet objet ne gère pas cette propriété ou cette méthode"
Saleté d'IE va !
Je suppose qu'il parle de la ligne
mais je suis trop crevé pour m'en occuper ce soir, je rentre à la casa.
Code : Sélectionner tout - Visualiser dans une fenêtre à part var rubriques = xmldoc.getElementsByTagName("rub");
Partager