Прежде чем текущее окно будет закрыто, проверьте, закрыто ли текущее окно
<pre name = "code"> <pre name = "code"> <html> <Head> <script language = "javaScript"> window.onbeforeUnload = function (event) {alert ("222"); // IE9 выполнит здесь, Chrome не выполнит // if (event.clientx> document.body.clientwidth && event.clienty <0 || event.altkey) {// Если это обновлен, он не будет подсказывать возврат «подтвердить, чтобы закрыть окно?»; //}} var aa; var Intervalvar; function showclose () {console.log («подожди и val:»+aa.closed); ClearInterval (Intervalvar); } function loadform () {aa = window.open ('foo.html', 'windowname', "width = 200, height = 200, scrollbars = no"); console.log («Проверьте закрытие перед Op, а Val:»+aa.closed); // Окно не закрыто сейчас, результатом является false aa.close (); <span style = "Белое пространство: pre"> </span> // Вызов метода закрытия окна. //Aa.close находится в процессе вызова, и результатом является False Intervalvar = setInterval (ShowClose, 100); }; // Используйте цикл, чтобы определить, закрыт ли субворот. На самом деле, это нормально использовать SetTimeout, но значение должно быть установлено более крупным функцией Unloadform () {alert ("2!"); } </script> </head> <body onload = "loadform ()" onUnload = "unloadform ()"> </body> </html>В IE9, если документ обновляется, будет выполнена Unloadform и Onbe ForueUnload. Если страница будет закрыта, будет выполнена только нагрузка.
Стоит отметить, что нагрузка не будет работать при закрытии страницы. Предполагается, что эта функция является встроенным событием в браузере и не может быть переопределена.
В Chrome, если документ обновляется, будут выполнены как Unloadform, так и OnbeforeUnload. Если страница будет закрыта, будет выполнена только нагрузка. Стоит отметить, что закомментированная строка не будет выполнена.
Если это детское окно, открытое Window.Open, вы можете использовать свойство Window.Closed, чтобы проверить, закрыто ли оно.
<html> <Head> <script language = "javascript"> var aa; var Intervalvar; function showclose () {console.log («подожди и val:»+aa.closed); ClearInterval (Intervalvar); } function loadform () {aa = window.open ('foo.html', 'windowname', "width = 200, height = 200, scrollbars = no"); console.log («Проверьте закрытие перед Op, а Val:»+aa.closed); // Окно не закрыто сейчас, результатом является false aa.close (); // вызов метода консоли закрытия окна. // В настоящее время aa.close находится в процессе вызова, результатом является false Intervalvar = setInterval (ShowClose, 100); }; // Использовать цикл, чтобы обнаружить, закрыто ли детское окно, на самом деле, можно использовать SetTimeout, но значение должно быть установлено более крупным функцией Unloadform () {alert ("2!"); } </script> </head> <body onload = "loadform ()" onUnload = "unloadform ()"> <a href = "test.htm"> вызов </a> </body> </html>Код, который автоматически закрывает Window.open Когда родительское окно закрыто
<html> <Head> <script language = "javascript"> var aa; var Intervalvar; window.onbeforeunload = function (event) {aa.close (); вернуть "Привет"; } function loadform () {aa = window.open ('test.htm', 'windowname', "width = 200, height = 200, scrollbars = no"); }; function unductorform () {alert ("2!"); } </script> </head> <body onload = "loadform ()" onUnload = "unloadform ()"> <a href = "test.htm"> Call </a> </body> </html>