Hallo,
Molily versuchte gerade schon, Dir diese Einsicht nahe zu bringen.
Und?
Es erklaärt aber nicht, ob es so sein muss, denn: Sobald ich per documentElement was einfüge, würde klar sein, dass ich kein bild öffnen will.
Nur bei einem sehr mitdenkenden Browser. Ich versuche es mal anders zu erklären. Wenn Du Dein vollkommen leeres Popup öffnest, hast Du diese Baumstruktur:
window
|
•Wenn aber per documentElement etwas einfügen willst, dann willst Du hinterher diese Baumstruktur haben:
window
|
•-- document
|
•-- documentElementDer mitdenkende Browser müsste also bei diesem Deinem Statement ...
popup.document.documentElement = irgendwas;
... schon einen document-Knoten mit erstellen. Wieso sollte er aber?
popup.document ist schon da. das ist immer da. Das:
Für den Browser weisst Du einem nicht existierenden Attribut (documentElement) eines nicht existenten Objektes (document) etwas zu.
stimmt also nicht ganz.
Klar, es wäre nett, aber das Ding ist immer noch eine Maschine. Und die unterschiedlichen DOM-Spezifikationen sagen nichts über ein Kristallkugel-Verhalten von Browsern voraus. ;)
Ist mir klar.
Ich möchte lediglich dass popup.document.documentElement.appendChild() in jedem Browser funktioniert. Dass das geht, macht Moz vor. Und, mir ist auch klar, dass ich mit dieser Forderung hier am falschen Platz bin.
Konsequenter im Sinne des DOMs wäre wohl dieser Ansatz:
// Popup öffnen, popup bezeichnet hier das nirgendwo in DOM standardisierte window-Objekt
var popup = window.open( '', 'bar', '[...]');
// In dem Popup ein HTML-Dokument erstellen.
popup.document = new HTMLDocument();// In diesem Dokument den Div-Knoten erstellen und einfügen
var div = popup.document.createElement( 'div');
div.appendChild(popup.document.createTextNode( 'foo'));
popup.document.documentElement.appendChild( div);
>
> Ist aber aus Faulheit ungetesteter Code. ;)
Sicher, Faulheit. Dass ich Beleidungen nicht mag, hatte ich ja schon mehrfach erwähnt.
Trotzdem: Dass dieses Objekt überhaupt existiert, wusste ich nicht. Ich werde das ausprobieren, danke.
Piere.