geek space web solutions

firstElementChild / firstChild‏ / children[0]

Jeudi, 21 Janvier 2010 16:55
Il y a quelque temps, j'ai utilisé la fonction firstElementChild dans mon code javascript. Sur Firefox cela fonctionne bien mais sur Internet Explorer cela ne fonctionne pas.

Après quelques recherches, je découvre qu'effectivement firstElementChild ne fonctionne sous aucun Internet Explorer mais fonctionne sur Firefox à partir de la version 3.5 !
http://www.quirksmode.org/dom/w3c_traversal.html


Je décide alors d'essayer avec firstChild, qui d'après le lien ci-dessous fonctionne sur tous les navigateurs :
http://www.quirksmode.org/dom/w3c_core.html

Pourtant, en testant, c'est maintenant l'inverse, mon javascript fonctionne sous IE mais pas sous Firefox ! En effet, pour une fois c'est Firefox qui interprète mal, c'est apparement un problème bien connu du moteur GECKO, c'est l'indentation du code qui pose problème ! Ce serait un problème d'espace insécable... En résumé, si les balises sont toutes accollées les unes aux autres, firstChild fonctionnera parfaitement !


Je décide alors de me replonger dans certains de mes anciens scripts qui fonctionnaient très bien sur la plupart des navigateurs. J'utilisais childNodes[0] qui revient exactement au même mais qui pose beaucoup moins de problèmes de compatibilités. J'utilise désormais uniquement childNodes[0] ...
 

Commentaires  

 
# Invité 26-10-2011 12:44
Bonjour.
je ne comprends pas en quoi childNodes apporte une solution.

Soit le fragment suivant :

premier nœud ?


Et le code javascript placé plus bas :

alert(document.getElementById( 'd').childNodes[0].tagName)


Les navigateurs autres que IE retourneront "undefined". IE retournera "SPAN". On n'a rien gagné par rapport à firstChild.

Personnellement , j'ai créé la petite fonction suivante qui retourne le premier élément non vide d'un autre élément passé en paramètre :

function fChild(elt) {
return elt.firstElementChi ld || elt.firstChild
}

IE ne supportant pas firstElementChi ld, il retournera ce qu'il estime être le firstChild.

Maintenant, je peux écrire :
alert(fChild(do cument.getElementById( 'd')).tagName)

Tous les navigateurs (que j'ai testé) retourneront "SPAN" dans leur boîte d'alerte.
Répondre | Répondre en citant | Citer
 

Ajouter un Commentaire


Code de sécurité
Rafraîchir

Sections

Éditeur de fichier XML en ligne


"XML Manager" est un éditeur sécurisé permettant d'administrer en ligne un fichier XML.
Il fournit des fonctions avancées de recadrage et de redimensionnement des images...

Sondages

Pensez-vous que le HTML5 puisse complètement remplacer Flash ?
 
Seriez-vous intéressé par un éditeur d'XML en ligne ?
 

Paypal

paypal

Code du plugin Joomla AutoSEO 1.2 par www.geek-space.fr