Überprüfen Sie, ob das aktuelle Fenster geschlossen ist, bevor das aktuelle Fenster geschlossen ist
<pre name = "code"> <pre name = "code"> <html> <kopf> <script Language = "javaScript"> Fenster.onbeforeLoad = Funktion (Ereignis) {alert ("222"); // IE9 wird hier ausgeführt. Chrome wird nicht ausgeführt // if (event.clientx> document.body.clientwidth && event.clienty <0 || event.altkey) {// Wenn es aktualisiert ist, fordert es nicht auf, die Rücksendung zu fordern. "Bestätigen Sie, um das Fenster zu schließen?" //}} var aa; var intervalvar; Funktion showClose () {console.log ("Wait and Val ist:"+aa.closed); ClearInterval (Intervalvar); } function loadForm () {aa = window.open ('foo.html', 'Windowname', "width = 200, Höhe = 200, Scrollbars = no"); console.log ("Schließen Sie, bevor OP und Val:"+aa.closed); // Das Fenster ist jetzt nicht geschlossen, das Ergebnis ist falsch aa.close (); <span style = "White-Space: PRE"> </span> // Aufrufen Sie die Methode des Fensters Schließen von Konsolen.log ("Nicht im Warten und Val ist:"+aa.cloded); //Aa.close befindet sich im Aufrufprozess, und das Ergebnis ist falsch intervalvar = setInterval (ShowClose, 100); }; // Verwenden Sie eine Schleife, um festzustellen, ob der Unterwindow geschlossen ist. Tatsächlich ist es in Ordnung, SetTimeout zu verwenden, aber der Wert muss eine größere Funktion entladeform () {alert ("2!") Festgelegt werden; } </script> </head> <body onload = "loadForm ()" onunload = "unloadForm ()"> </body> </html>Wenn das Dokument aktualisiert wird, wird in IE9 ausgeführt, wenn das Entladen und die OneUnoLoad ausgeführt wird. Wenn die Seite geschlossen ist, wird nur bei der Vorabladung ausgeführt.
Es ist erwähnenswert, dass Onumload beim Schließen der Seite nicht ausgeführt wird. Es wird geschätzt, dass diese Funktion ein integriertes Ereignis im Browser ist und nicht neu definiert werden kann.
Wenn das Dokument aktualisiert wird, wird in Chrome sowohl Entladeform als auch OnbeforeUnload ausgeführt. Wenn die Seite geschlossen ist, wird nur bei der Vorabladung ausgeführt. Es ist erwähnenswert, dass die kommentierte Zeile nicht ausgeführt wird.
Wenn es sich um ein von window.open geöffnetes untergeordnetes Fenster handelt, können Sie das Fenster verwenden. GEBOTEN.
<html> <head> <script langer = "javaScript"> var aa; var intervalvar; Funktion showClose () {console.log ("Wait and Val ist:"+aa.closed); ClearInterval (Intervalvar); } function loadForm () {aa = window.open ('foo.html', 'Windowname', "width = 200, Höhe = 200, Scrollbars = no"); console.log ("Schließen Sie, bevor OP und Val:"+aa.closed); // Das Fenster ist jetzt nicht geschlossen, das Ergebnis ist falsch aa.close (); // Aufrufen der Methode des Fensters Schließen von Konsolen.log ("Nicht warten und Val ist:"+aa.closed); // Zu diesem Zeitpunkt ist AA.CLOSE im Aufrufprozess, das Ergebnis ist falsch intervalvar = setInterval (ShowClose, 100); }; // LOOP verwenden, um festzustellen, ob das untergeordnete Fenster geschlossen ist, ist es in Ordnung, SetTimeout zu verwenden, aber der Wert sollte eine größere Funktion entladeform () {alert ("2!") Festgelegt werden. } </script> </head> <body onload = "loadForm ()" onunload = "unloadForm ()"> <a href = "test.htm"> Aufruf </a> </body> </html>Code, der das Fenster automatisch schließt. Open Wenn das übergeordnete Fenster geschlossen ist
<html> <head> <script langer = "javaScript"> var aa; var intervalvar; window.onbeforeUload = Funktion (Ereignis) {aa.close (); zurück "Hallo"; } function loadForm () {aa = window.open ('test.htm', 'Windowname', "width = 200, Höhe = 200, Scrollbars = no"); }; Funktion entladeform () {alert ("2!"); } </script> </head> <body onload = "loadForm ()" onunload = "unloadForm ()"> <a href = "test.htm"> call </a> </body> </html>