[AJAX/DOM] bug sous IE

Résolu
wolfy -  
 wolfy -
Bonjour à tous,

je suis entrain de travaillé sur la compatibilité de mon site, sous firefox aucun problème mais sous IE ...

pour ne pas retaper tout mon code je vais expliquer vite fait:
je reçois de l'AJAX un arbre en XML, que je parse pour l'afficher dans un tableau, la où cela coince c'est que toute les balises XML ne sont pas toujours présente, je test donc si elle existe par un simple if qui test si la balise <NAMEDEVICE> existe :

if(((x[i].getElementsByTagName("NAMEDEVICE")[0]=="[object Element]") || (x[i].getElementsByTagName("NAMEDEVICE")[0]=="[object]")) && (x[i].getElementsByTagName("NAMEDEVICE")[0].childNodes[0].nodeValue.search("IP Phone")!=-1))

un peu lourd je sais ... sous firefox ca passe nikel mais sous IE il s'y arrete direct.

x = mon arbre XML
x[i] = une partie de l'arbre

si quelqu'un a une solution ou une piste a me proposer, il est le bien venu

merci a tous


A voir également:

4 réponses

boly38 Messages postés 267 Date d'inscription   Statut Membre Dernière intervention   80
 
pour moi "[object Element]" et "[object]" correspondent à des résultats de conversions d'objet en chaîne de caractères... amha ce n'est pas le genre d'élément à utiliser pour tester un objet.

Un test avec uniquement l'objet devrait suffire quelque-soit le navigateur.
Tente un essai du genre :
 
if(x[i] && x[i].getElementsByTagName("NAMEDEVICE")
         && x[i].getElementsByTagName("NAMEDEVICE")[0]) {
 nameDeviceNode = x[i].getElementsByTagName("NAMEDEVICE")[0];
   if (nameDeviceNode 
 && nameDeviceNode.childNodes[0]
 && nameDeviceNode.childNodes[0].nodeValue.search("IP Phone")!=-1) {
      // @todo implémentation
   }
}
2
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

Pour essayer de comprendre ce qui ne se passe pas correctement, je te conseille de rajouter, juste avant ton « if », ces quelques traces :

alert(x[i].getElementsByTagName("NAMEDEVICE")[0]);
alert(x[i].getElementsByTagName("NAMEDEVICE")[0].childNodes[0].nodeValue.search("IP Phone"));

Ça permettras de savoir où il ne passe pas...

Xavier
0
wolfy
 
je l'ai deja fait mais en gros ca m affiche:

alert(x[i].getElementsByTagName("NAMEDEVICE")[0]);
=> null , [object] ou [object Element]
alert(x[i].getElementsByTagName("NAMEDEVICE")[0].childNodes[0].nodeValue);
=> si le premier est différent de null ca affiche : Cisco Ip Phone ... par contre si le premier est null la ca plante mais ca c est normal vu que ca n'existe pas
0
wolfy
 
Grand merci, ca fonctionne nickel

je devrais parfois revoir au plus simple ...
0