Hallo,
Nun haben Tests ergeben, dass bisher nur Mozilla dieses Element korrekt implementiert.
Nein.
Alle anderen Browser haben das Attribut zwar auch
Eben.
allerdings ist es in einem leeren per window.open geöffnetem Dokument (also eins komplett ohne inhalt) nicht verfügbar.
Wieso sollte es auch?
Nach wie vor scheint also Mozilla der einzige echte DOM fähige Browser zu sein.
Das hat überhaupt nichts mit dem DOM zu tun. Ob in einem Dokument eines mit window.open() geöffneten neuen Fensters, das durch die URL »« bezeichnet ist, bereits ein rudimentärer HTML-DOM-Baum vorhanden ist, ist nirgendwo geregelt. Was auch immer ein Browser macht, gegen den DOM-Standard verstößt er nicht.
Wann und ob die anderen Browser das fixen, kann ich nur vermuten.
Wahrscheinlich nie, weil es kein Verstoß gegen das DOM ist.
var div = document.createElement( 'div');
div.appendChild( document.createTextNode( 'foo'));
var popup = window.open( '', 'bar', '[...]');
popup.document.documentElement.appendChild( div);
Wieso nimmst du selbstverständlich an, dass das Dokument bereits ein Wurzelelement hat?
Und wie Struppi sagt, du kannst nicht einen Knoten im Kontext des einen Dokuments erzeugen und dann (ohne importNode) in einem anderen einfügen.
Zum gleich Ausprobieren einfach hier klicken: dom2 test
Es sollte ein Popup durch die Seite geöffnet werden, in dem "foo" zu lesen ist. Wenn "foo" erscheint, dann hat der Browser "documentElement" vollständig eingebaut. Wenn nicht, dann ist der Browser nicht vollständig DOM2 kompatibel.
Noch einmal, das hat mit dem W3C DOM nichts zu tun.
documentElement ist verfügbar, wenn ein Wurzelelementknoten im Dokument verfügbar ist. Jeder Browser, der halbwegs DOM kann, setzt diese Regel korrekt um.
window.open("", "name") ist aber eine völlig andere Geschichte, die nicht im DOM geregelt ist. Überhaupt entstammt window.open() und der fensterübergreifende Zugriff einer ganz anderen Dimension, nämlich dem bis heute proprietären Netscape JavaScript.
Mathias