it-swarm.com.de

Wie wird die Funktion des übergeordneten Fensters ausgeführt, wenn das untergeordnete Fenster geschlossen wird?

Ich rufe die Javascript window.open () - Funktion auf, um eine weitere URL in einem Popup zu laden. Sobald die Benutzer fertig sind, gelangen sie zur letzten Seite, auf der ein Link mit dem Befehl close window steht, der die window.close () - Funktion aufruft. Wenn diese Seite geschlossen wird, muss ich etwas auf der ursprünglichen Seite aktualisieren, die das Fenster geöffnet hat. Gibt es eine Möglichkeit, dies zu tun? Ich muss eine Funktion aufrufen, die sich auf meiner Originalseite befindet.

40
ngreenwood6

Sie können dies irgendwie versuchen:

Ausgeblendetes Fenster: 

window.onunload = function (e) {
    opener.somefunction(); //or
    opener.document.getElementById('someid').innerHTML = 'update content of parent window';
};

Übergeordnetes Fenster:

window.open('Spawn.htm','');
window.somefunction = function(){

}

Sie sollten dies nicht für das übergeordnete Element tun, andernfalls wird opener.somefunction () nicht funktionieren. Durch das Ausführen von window.somefunction wird eine Funktion als öffentlich gemacht:

function somefunction(){

}
58
jerjer

Sie möchten wahrscheinlich das Ereignis ' onbeforeunload ' verwenden. Damit können Sie eine Funktion im übergeordneten Fenster direkt vom untergeordneten Fenster aufrufen, bevor das untergeordnete Fenster geschlossen wird.

Also wahrscheinlich so etwas:

window.onbeforeunload = function (e) {
    window.parent.functonToCallBeforeThisWindowCloses();
};
9
Darrell Brogdon

Dies ist ein alter Beitrag, aber ich dachte, ich würde eine andere Methode hinzufügen, um dies zu tun:

var win = window.open("http://www.google.com");

var winClosed = setInterval(function () {

    if (win.closed) {
        clearInterval(winClosed);
        foo(); //Call your function here
    }

}, 250);

Sie müssen den Inhalt nicht ändern oder Eventhandler aus dem untergeordneten Fenster verwenden.

8
user3886234

Für die Antworten müssen Sie dem gebildeten Fenster Code hinzufügen. Das ist keine Kopplung.

// In parent window
var pop = open(url);
pop.onunload = function() {
  // Run your code, the popup window is unloading
  // Beware though, this will also fire if the user navigates to a different
  // page within thepopup. If you need to support that, you will have to play around
  // with pop.closed and setTimeouts
}
4
Juan Mendes

Ich weiß, dass dieser Beitrag alt ist, aber ich habe festgestellt, dass dies wirklich gut funktioniert:

window.onunload = function() {
    window.opener.location.href = window.opener.location.href;
};

Der window.onunload-Teil war der Hinweis, den ich auf dieser Seite gefunden habe. Danke, @jerjer!

0
Sablefoste

Neben jerjer answer (oben) wird manchmal in Ihrem übergeordneten Fenster und in Ihrem untergeordneten Fenster nicht sowohl ein externes als auch ein internes Problem angezeigt, und Sie können nicht auf die Eigenschaften der übergeordneten Seite zugreifen. Siehe window.opener ist im Internet nicht definiert Explorer

0
yesh