Bonjour!
Voila j'ai (encore!) un soucis avec mon code. J'explique ce que je veux faire:

Je veux récupérer le contenu d'un fichier XML en local et l'insérer dans un tableau. Sous IE ça marche très bien, mais sous Firefox ça ***** grave...

voilà le code d'appel du xml et d'insertion dans un tableau en ajax/javascript :

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
//Fonction permettant d'instancier les actions
// url: URL du fichier à ouvrir
	function creerRequeteAction() {
		if(liste_action==''){
		  if (window.XMLHttpRequest) { // Mozilla, Safari,...
		  http_request = new XMLHttpRequest();
		  if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		  }
		} 
		else if (window.ActiveXObject) { // IE
		  try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
			  try {
			    http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			 }
			}
			if (!http_request) {
			 alert('La creation d\'objet xmlHTTPRequest n\'a pas ete possible');
			 return false;
			}
			http_request.onreadystatechange = function(){
				if (http_request.readyState == 4) {
					if (http_request.status == 200) {
						alertContents(false,http_request.responseXML);
					} 
					else {
						alert('Il y a eu un probleme avec la requete.');
					}
				}
			}
			http_request.open('GET','web_calendar_action.xml', true);
			http_request.send(null);
		}
		else alertContents(true,'');
	}
 
	//Fonction récupérant ce qu'il y a a l'intérieur du fichier XML
	function alertContents(listeActionStatus, reponseText) {
 
		//Si la liste d'action est vide, on l'a rempli
		if(listeActionStatus==false){
			var xmldoc = reponseText;
			var root = xmldoc.getElementsByTagName('action_list').item(0);
			for (var iNode = 0; iNode < root.childNodes.length; iNode++) {
			var cnt = 0;//Compteur du tableau arr
			var arr = new Array();//Tableau qui contiendra chaque ligne correspondant à un couple action/couleur
			var objNamedNodeMap = xmldoc.documentElement.childNodes(iNode);
			if (objNamedNodeMap.getAttribute("name")!="") {
				liste_action+='&nbsp;'+objNamedNodeMap.getAttribute("name");
			        liste_couleur+='&nbsp;'+objNamedNodeMap.getAttribute("color");
			        arr[cnt] = '<a href="javascript:initBulle(\''+objNamedNodeMap.getAttribute("name")+'\');">'+objNamedNodeMap.getAttribute("name")+'</a>';
			        cnt++;
			        arr[cnt] = '<table style="background-color:'+objNamedNodeMap.getAttribute("color")+'; height: 10px; width: 10px;"><tr><td></td></tr></table>'; 
				cnt++;
			}
			ajoutLigne("tabAction", arr);
		  }
		}
		//Sinon on utilise ce qui est déjà écrit à l'intérieur de liste_action
		else{
			var tabSplitAction = liste_action.split('&nbsp;');
			var tabSplitCouleur = liste_couleur.split('&nbsp;');
			for(var compteur = 1; compteur < tabSplitAction.length; compteur++){
				var cnt = 0;//Compteur du tableau arr
				var arr = new Array();//Tableau qui contiendra chaque ligne correspondant à un couple action/couleur
				arr[cnt] = '<a href="javascript:initBulle(\''+tabSplitAction[compteur]+'\');">'+tabSplitAction[compteur]+'</a>';
				cnt++;
				arr[cnt] = '<table style="background-color:'+tabSplitCouleur[compteur]+'; height: 10px; width: 10px;"><tr><td></td></tr></table>'; 
				cnt++;
				ajoutLigne("tabAction", arr);
			}
		}
	}
 
	//Fonction ajoutant une ligne dans la div d'action
	function ajoutLigne(tablename, arr) {
	   var tbl = document.getElementById(tablename);
	   var lastRow = tbl.rows.length;
	   var row = tbl.insertRow(lastRow);
		  for (r = 0; r < arr.length; r++) {   
			 var cell = row.insertCell(r);
			 cell.innerHTML = arr[r];
		  }
	   }
Et voici mon fichier XML:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<?xml version="1.0" standalone='no'?>
 
<action_list user="">
	<action name="arrosage" hasend="yes" color="#ff0000"></action>
	<action name="chauffage" hasend="yes" color="#008800"></action>
	<action name="demarrage chauffage" hasend="no" color="#000088"></action>
	<action name="arret chauffage" hasend="no" color="#ff0055"></action>
</action_list>
Ce que le code au-dessus récupère c'est le nom et la couleur de chaque action. Sous IE il n'y a aucun problème ça met le tout dans le tableau, Mais sous Firefox ça bloque ici:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
var objNamedNodeMap = xmldoc.documentElement.childNodes(iNode);
Et autre chose d'étrange, lorsque je fais ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
alert(root.childNodes.length);
pour verifier ce qu'il se passe, il m'affiche 9! Diable mais où voit-il 9 elements dans mon XML???

D'avance merci pour votre aide!