J'ai écrit un système d'onglets en utilisant du Javascript très basique et il fonctionne comme un champion dans IE 8 mais, dans FireFox 3 je suis à court . Le pertitent HTML est comme suit:element.firstChild retourne '<TextNode ...' au lieu d'un objet en FF
<div id="tabs">
<ul class="tabs">
<li class="current"><a><span>News</span></a></li>
<li><a><span>Videos</span></a></li>
<li><a><span>Photos</span></a></li>
<li><a><span>Twitter</span></a></li>
</ul>
</div>
Ensuite, la charge de la page, je suis tombé dans cette méthode:
function processTabs(TabContainer, PageContainer, Index) {
var tabContainer = document.getElementById(TabContainer);
var tabs = tabContainer.firstChild;
var tab = tabs.firstChild;
var i = 0;
.... more code }
Le reste du code n'a pas d'importance à ce stade, car il ne sera jamais appelé . TabContainer est correctement défini pour référencer la div avec les onglets d'identité. Maintenant, dans Internet Explorer quand je l'appelle tabContainer.firstChild la variable « onglets » fait référence à mon UL puis sur l'onglet appel var = tabs.firstChild; références mon premier LI. Le problème est que quand je l'appelle tabContainer.firstChild Venkman me dit qu'il est de retour. Donc firefox lit mes nouvelles lignes comme des enfants réels à l'intérieur de la div! Mon UL est en fait le deuxième enfant de la collection childNodes!
Y at-il un moyen de résoudre ce problème?
Merci!
Bien fait, travaillé comme un charme! – dparsons
Dans la fonction 'getFirstChild' je vérifierais' firstChild.nodeType! = 1' au lieu de 'firstChild.nodeType == 3' afin d'ignorer aussi d'autres types de nœuds tels que les commentaires. – Cito
Cette réponse devrait être mise à jour pour le changement @Cito suggéré, je viens de rencontrer un développeur qui a copié ce code exact, et bien sûr, il y avait un commentaire HTML avant le premier nœud de l'élément qui a été recherché ...et donc échoué. – scunliffe