Ich öffne eine neue leere Registerkarte. Jetzt von diesem Tab muss ich eine Website in einem neuen Tab öffnen. Ich mache das wie folgt. In seiner Konsole schreibe ich:Warum funktioniert das Onload-Ereignis nicht auf einer mit window.open geöffneten Registerkarte?
var wild = window.open("https://css-tricks.com/", "mywin", '');
Das funktioniert gut. Jetzt habe ich Zugriff auf dieses neue Fenster mit wild.document
. Jetzt möchte ich etwas Code auf dieser Seite ausführen, nachdem ihr dom geladen wurde. Ich benutze das onload
Ereignis als:
function foo(){
var mytext = wild.document.body.textContent;
alert(mytext);
}
wild.addEventListener("load", foo);
Aber leider ist der Alarm nicht geschieht. Ich habe auch versucht, den Ereignis-Listener in anonyme Selbstaufruf-Funktion wie explained in this answer setzen, aber das hat auch nicht funktioniert. Ich habe auch ondload-Event versucht, aber das hat leider auch nicht funktioniert. So,
Warum funktioniert das Ereignis onload nicht auf einer Registerkarte, die mit window.open geöffnet wird? Und wie funktioniert es richtig?
Wahrscheinlich aufgrund der [Same Origin Policy] (https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy). Wenn Sie eine externe Site laden, können Sie keine Ereignisse darauf ausführen. – Utkanos
@Utkanos Wenn ich anstelle von 'onload' die' setTimeout' Funktion mit 5sec Verzögerung verwende, dann funktioniert das perfekt. Ich denke, es liegt nicht an der gleichen Herkunftspolitik. – user31782
hast du versucht wild.onload = foo; oder wild.addEventListener ("load", foo, true); ? –