Ashura: IE und Mozilla verhalten sich unterschiedlich bei DOM-Knoten?

Beitrag lesen

Hallo flaffy.

Das Problem sind die #text-Blöcke "zwischen" den einzelnen Nodes. Das ist jetzt nicht nur bei dem Beispiel so sondern generell. Kann mir das jemand erklären? Bzw. wie ich diese Elemente vermeiden kann?

Gar nicht, da es dem Client überlassen ist, ob er Whitespaces (Leerzeichen, Tabs und Zeilenumbrüche) als Textknoten ansieht, oder nicht.

Das gesamte Dokument ohne jegliche Quelltextformatierung zu schreiben ist keine gute Alternative.

Mein erster Lösungsgedanke war, einfach per nodeType zu filtern. Was dann zu meinem nächsten Problem führte: hasChildNodes() bezieht sich u.a. im Mozilla auf ein #text Element. d.h. jedes Elemente - ob es nun children hat oder nicht - hat childs.

Warum so kompliziert? Warum nicht so:

document.getElementsByTagName('ul')[0].getElementsByTagName('li')[0];

Damit greifst du auf das erste Listenelement in der ersten ungeordneten Liste im Dokument zu. Um Textknoten musst du dich hierbei nicht kümmern, da du ja zwangsläufig nur auf Elementknoten zugreifst.

Einen schönen Dienstag noch.

Gruß, Ashura

--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
„It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
[HTML Design Constraints: Logical Markup]