Ho scritto un sistema di tabulazione utilizzando un Javascript molto semplice e funziona come un campione in IE 8 ma, in FireFox 3 sto arrivando in breve . Il codice HTML pertitent è la seguente:element.firstChild restituisce '<TextNode ...' invece di un oggetto in 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>
Poi, al caricamento della pagina, si disconnette in questo metodo:
function processTabs(TabContainer, PageContainer, Index) {
var tabContainer = document.getElementById(TabContainer);
var tabs = tabContainer.firstChild;
var tab = tabs.firstChild;
var i = 0;
.... more code }
Il resto del codice non importa a questo punto perché non è mai viene chiamato . tabContainer è impostato correttamente per fare riferimento al div con le schede ID. Ora, in Internet Explorer quando chiamo tabContainer.firstChild la variabile 'tabs' fa riferimento alla mia UL e quindi alla variabile var call = tabs.firstChild; fa riferimento alla mia prima LI. Il problema è che quando chiamo tabContainer.firstChild Venkman mi sta dicendo che sta tornando. Quindi Firefox sta leggendo le mie nuove righe come veri bambini all'interno del div! Il mio UL è in realtà il secondo figlio della collezione childNodes!
C'è un modo per risolvere questo problema?
Grazie!
Ben fatto, ha funzionato come un fascino! – dparsons
Nella funzione 'getFirstChild' verificherei' firstChild.nodeType! = 1' invece di 'firstChild.nodeType == 3' per saltare anche altri tipi di nodi come i commenti. – Cito
Questa risposta dovrebbe essere aggiornata alla modifica suggerita da @Cito, ho appena incontrato uno sviluppatore che ha copiato questo codice esatto e sicuramente c'era un commento HTML prima del primo nodo di elementi che era stato cercato ...e quindi fallito. – scunliffe