Antes de que se cierre la ventana actual, verifique si la ventana actual está cerrada
<preame = "código"> <preame = "código"> <html> <HEAD> <script language = "javaScript"> window.onbeforeunload = function (event) {alert ("222"); // IE9 se ejecutará aquí, Chrome no se ejecutará // if (event.clientx> document.body.clientwidth && event.clienty <0 || event.altkey) {// Si se actualiza, no se indicará retorno "confirmar para cerrar la ventana?"; //}} var aa; VAR Intervalvar; función showclose () {console.log ("espera y val es:"+aa.closed); ClearInterval (intervalvar); } function loadForm () {aa = window.open ('foo.html', 'windowname', "width = 200, altura = 200, scrollbars = no"); console.log ("Verifique Cerrar antes de OP y Val es:"+AA.Closed); // La ventana no está cerrada ahora, el resultado es falso aa.close (); <span style = "White-Space: pre"> </span> // llamando al método de cierre de ventana console.log ("No está en espera y val es:"+aa.closed); //Aa.close está en el proceso de llamada, y el resultado es falso intervalvar = setInterval (showclose, 100); }; // Use un bucle para detectar si la subwindow está cerrada. De hecho, está bien usar setTimeOut, pero el valor debe establecerse una función más grande Descarform () {alert ("2!"); } </script> </head> <body onload = "loadform ()" onUnload = "Descargeform ()"> </body> </html>En IE9, si el documento se actualiza, se ejecutará la forma de descarga y se ejecutará la carga de la carga. Si la página está cerrada, solo se ejecutará OnBeforeSload.
Vale la pena señalar que OnUnload no se ejecutará al cerrar la página. Se estima que esta función es un evento integrado en el navegador y no se puede redefinir.
En Chrome, si el documento se actualiza, se ejecutará la forma de descarga y el OnbeforeSload. Si la página está cerrada, solo se ejecutará OnBeforeSload. Vale la pena señalar que la línea comentada no será ejecutada.
Si es una ventana infantil abierta por ventana.
<html> <head> <script language = "javaScript"> var aa; VAR Intervalvar; función showclose () {console.log ("espera y val es:"+aa.closed); ClearInterval (intervalvar); } function loadForm () {aa = window.open ('foo.html', 'windowname', "width = 200, altura = 200, scrollbars = no"); console.log ("Verifique Cerrar antes de OP y Val es:"+AA.Closed); // La ventana no está cerrada ahora, el resultado es falso aa.close (); // llamando al método de cierre de ventana console.log ("no está en espera y val es:"+aa.closed); // En este momento AA.Close está en el proceso de llamada, el resultado es falso intervalvar = setInterval (showclose, 100); }; // Use el bucle para detectar si la ventana infantil está cerrada, de hecho, está bien usar setTimeout, pero el valor debe establecer una función más grande Descargeform () {alerta ("2!"); } </script> </head> <body onload = "loadform ()" onUnload = "Descargeform ()"> <a href = "test.htm"> llamando a </a> </body> </html>Código que cierra automáticamente la ventana. Abre cuando la ventana principal esté cerrada
<html> <head> <script language = "javaScript"> var aa; VAR Intervalvar; window.onbeforeunload = function (event) {aa.close (); devolver "hola"; } function loadForm () {aa = window.open ('test.htm', 'windowname', "width = 200, altura = 200, scrollbars = no"); }; function DescarForm () {alert ("2!"); } </script> </head> <body onload = "loadform ()" onUnload = "Descargeform ()"> <a href = "test.htm"> call </a> </body> </html>