Gerd: Unterschiedlicher Umgang mit Kindknoten im IE vs. Firefox

Hallo,

mein kleines Beispiel entfernt bei Aufruf einer entsprechenden Funktion
( jeweils ) den obersten Kindknoten aus einem definierten Bereich "ebenen":

------------------------------------------------------------------------------------------------------------------

<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
<title>test</title>
<script type="text/javascript">
<!--
function entferne_kindknoten()
{
knoten = document.getElementById('ebenen');
kindknoten = knoten.getElementsByTagName('div')[0];
knoten.removeChild(kindknoten);
}
-->
</script>
</head>
<body>
<div id="ebenen">

<!-- Beliebiger Kommentar -->

<div id="ebene1">Ebene1</div>

<!-- Beliebiger Kommentar -->

<div id="ebene2">Ebene2</div>
<!-- Beliebiger Kommentar -->
<div id="ebene3">Ebene3</div>
<!-- Beliebiger Kommentar -->
</div>
<p><a href="javascript:entferne_kindknoten()">entferne kindknoten</a></p>
</body>
</html>

------------------------------------------------------------------------------------------------------------------

Laut Dokumentation http://de.selfhtml.org/javascript/objekte/node.htm#child_nodes_whitespace behandelt der Internet Explorer unter Windows Zeilenumbrüche und Kommentare ebenfalls als Kindknoten, während beispielsweise Firefox diese ignoriert.

Mein Beispiel funktioniert aber in beiden Browsern ( Firefox 2 und IE 7 ) gleichermaßen.

Frage 1:

Was mach ich hier falsch, das es richtig läuft ? Bzw: wann/wo tritt das oben erwähnte Phänomen auf ?

Frage 1:

Wie wird sich der Internet Explorer 8 in diesem Punkt verhalten: weiterhin konsequent "falsch" (d.h. nicht dem DOM entsprechend) oder DOM-gemäß ?

Vielen Dank für Hinweise

Gerd

  1. Yerf!

    Was mach ich hier falsch, das es richtig läuft ? Bzw: wann/wo tritt das oben erwähnte Phänomen auf ?

    kindknoten = knoten.getElementsByTagName('div')[0];
    knoten.removeChild(kindknoten);

    Du entfernst entgegen deiner Angabe nicht den ersten Kindknoten, sondern den ersten Div.

    knoten.removeChild(knoten.firstChild); //ersten Kindknoten entfernen  
    
    

    Wie wird sich der Internet Explorer 8 in diesem Punkt verhalten: weiterhin konsequent "falsch" (d.h. nicht dem DOM entsprechend) oder DOM-gemäß ?

    Weis ich jetzt nicht, aber ich würde mich nicht auf die exakten Kindknoten festlegen. Besser ist es einen robusten Ansatz zu verwenden, der immer das richtige Ergebnis liefert (z.B. so wie in deinem Code per getElementsByTagName)

    Gruß,

    Harlequin

    --
    <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
    1. Stimmt auch. Grummel.

  2. Hi,

    Laut Dokumentation http://de.selfhtml.org/javascript/objekte/node.htm#child_nodes_whitespace behandelt der Internet Explorer unter Windows Zeilenumbrüche und Kommentare ebenfalls als Kindknoten, während beispielsweise Firefox diese ignoriert.

    Noe, andersherum.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Stimmt. Grummel.