Sebelum jendela saat ini ditutup, periksa apakah jendela saat ini ditutup
<pre name = "code"> <pre name = "code"> <html> <head> <script language = "javascript"> window.onbeforeunload = function (event) {alert ("222"); // IE9 akan dieksekusi di sini, Chrome tidak akan mengeksekusi // if (event.clientx> document.body.clientwidth && event.clienty <0 || event.altkey) {// Jika refresh, itu tidak akan segera mengembalikan "konfirmasi untuk menutup jendela?"; //}} var aa; var intervalvar; fungsi showclose () {console.log ("tunggu dan val adalah:"+aa.closed); ClearInterval (IntervalVar); } function loadForm () {aa = window.open ('foo.html', 'windowname', "width = 200, tinggi = 200, scrollbars = no"); console.log ("Periksa tutup sebelum op dan val adalah:"+aa.closed); // Jendela tidak ditutup sekarang, hasilnya false aa.close (); <span style = "White-space: pre"> </span> // Memanggil metode window console.log ("tidak menunggu dan val adalah:"+aa.closed); //Aa.close sedang dalam proses panggilan, dan hasilnya adalah false intervalvar = setInterval (showclose, 100); }; // Gunakan loop untuk mendeteksi apakah subwindow ditutup. Bahkan, tidak apa -apa menggunakan SetTimeout, tetapi nilainya harus diatur fungsi yang lebih besar UNLOADForm () {ALERT ("2!"); } </script> </head> <body onload = "loadForm ()" onunload = "unloadForm ()"> </body> </html>Di IE9, jika dokumennya disegarkan, UploadForm dan OnBeforeunload akan dieksekusi. Jika halaman ditutup, hanya OnBeforeunload yang akan dieksekusi.
Perlu dicatat bahwa Onunload tidak akan berjalan saat menutup halaman. Diperkirakan bahwa fungsi ini adalah peristiwa bawaan di browser dan tidak dapat didefinisikan ulang.
Di Chrome, jika dokumen disegarkan, baik UploadForm dan Onbeforeunload akan dieksekusi. Jika halaman ditutup, hanya OnBeforeunload yang akan dieksekusi. Perlu dicatat bahwa jalur yang dikomentari tidak akan dieksekusi.
Jika itu adalah jendela anak yang dibuka oleh window.open, Anda dapat menggunakan jendela. Properti tertutup untuk memeriksa apakah itu ditutup.
<Html> <head> <script language = "javascript"> var aa; var intervalvar; fungsi showclose () {console.log ("tunggu dan val adalah:"+aa.closed); ClearInterval (IntervalVar); } function loadForm () {aa = window.open ('foo.html', 'windowname', "width = 200, tinggi = 200, scrollbars = no"); console.log ("Periksa tutup sebelum op dan val adalah:"+aa.closed); // Jendela tidak ditutup sekarang, hasilnya false aa.close (); // Memanggil metode window console.log ("tidak menunggu dan val adalah:"+aa.closed); // Saat ini AA.Close sedang dalam proses panggilan, hasilnya adalah False IntervalVar = setInterval (Showclose, 100); }; // Gunakan loop untuk mendeteksi apakah jendela anak ditutup, pada kenyataannya, tidak apa -apa untuk menggunakan setTimeout, tetapi nilainya harus ditetapkan fungsi yang lebih besar unloadform () {waspada ("2!"); } </script> </head> <body onload = "loadForm ()" onunload = "unloadForm ()"> <a href = "test.htm"> memanggil </a> </body> </html>Kode yang secara otomatis menutup jendela. Buka saat jendela induk ditutup
<Html> <head> <script language = "javascript"> var aa; var intervalvar; window.onbeforeunload = function (event) {aa.close (); Kembalikan "Halo"; } function loadForm () {aa = window.open ('test.htm', 'windowname', "width = 200, tinggi = 200, scrollbars = no"); }; fungsi unloadform () {alert ("2!"); } </script> </head> <body onload = "loadForm ()" onunload = "unloadForm ()"> <a href = "test.htm"> hubungi </a> </body> </html>