Wie auch immer, das erste was ich daraus gelernt habe ist direkt nach dem Laden des DOMs einmal
document.documentElement.normalize();
auszuführen.Mit welchem Ziel?
Ich erinnere mich daran mal ein Projekt übernommen zu haben, darin wurde ziemlich viel mit den DOM-Traversierungs-Methoden gearbeitet. Mein erster Schritt war die Einrückung zu korrigieren, danach haben sämtliche Skripte nicht mehr funktioniert. Hat ne Weile gedauert bis ich rausgefunden habe, dass die Einrückung teilweise mit Absicht verkorkst war, damit durch Whitespace keine leeren Textknoten erzeugt werden.
Beispiel:
Fall1:
<ul><li>Foo<li></ul>
document.querySelector('ul').firstChild; // liefert das li-Element
Fall2:
<ul>
<li>Foo<li>
</ul>
document.querySelector('ul').firstChild; // liefert leeren Textknoten