ก่อนที่หน้าต่างปัจจุบันจะปิดให้ตรวจสอบว่าปิดหน้าต่างปัจจุบันหรือไม่
<pre name = "code"> <pre name = "code"> <html> <head> <script language = "JavaScript"> window.onbeforeunload = function (เหตุการณ์) {Alert ("222"); // IE9 จะดำเนินการที่นี่ Chrome จะไม่ดำเนินการ // ถ้า (Event.Clientx> document.body.clientwidth && event.clienty <0 || event.altkey) {// ถ้ามันรีเฟรช //}} var aa; VAR IntervalVar; function showclose () {console.log ("รอและวาลคือ:"+aa.closed); ClearInterval (IntervalVar); } function loadform () {aa = window.open ('foo.html', 'windowname', "width = 200, ความสูง = 200, scrollbars = no"); console.log ("ตรวจสอบปิดก่อน op และ val คือ:"+aa.closed); // หน้าต่างไม่ได้ปิดในขณะนี้ผลลัพธ์เป็นเท็จ aa.close (); <span style = "space สีขาว: pre"> </span> // เรียกวิธีการปิดหน้าต่าง console.log ("ไม่รอและ val คือ:"+aa.closed); //aa.close อยู่ในกระบวนการโทรและผลลัพธ์คือ False IntervalVar = setInterval (Showclose, 100); - // ใช้ลูปเพื่อตรวจสอบว่า subwindow ถูกปิดหรือไม่ ในความเป็นจริงมันก็โอเคที่จะใช้ settimeout แต่ค่าจะต้องตั้งค่าฟังก์ชั่นขนาดใหญ่ unloadform () {การแจ้งเตือน ("2!"); } </script> </head> <body onload = "loadform ()" onunload = "unloadform ()"> </body> </html>ใน IE9 หากเอกสารได้รับการรีเฟรชการขนถ่ายและ onbeforeunload จะถูกดำเนินการ หากหน้าถูกปิดจะมีการดำเนินการเฉพาะ onbeforeunload เท่านั้น
เป็นที่น่าสังเกตว่า Onunload จะไม่ทำงานเมื่อปิดหน้า คาดว่าฟังก์ชั่นนี้เป็นเหตุการณ์ในตัวในเบราว์เซอร์และไม่สามารถนิยามใหม่ได้
ใน Chrome หากเอกสารได้รับการรีเฟรชทั้ง Unloadform และ OnBeforeNoad จะถูกดำเนินการ หากหน้าถูกปิดจะมีการดำเนินการเฉพาะ onbeforeunload เท่านั้น เป็นที่น่าสังเกตว่าบรรทัดที่แสดงความคิดเห็นจะไม่ถูกดำเนินการ
หากเป็นหน้าต่างเด็กที่เปิดโดย Window.Open คุณสามารถใช้ Window.closed Property เพื่อตรวจสอบว่าปิดอยู่หรือไม่
<html> <head> <script language = "JavaScript"> var aa; VAR IntervalVar; function showclose () {console.log ("รอและวาลคือ:"+aa.closed); ClearInterval (IntervalVar); } function loadform () {aa = window.open ('foo.html', 'windowname', "width = 200, ความสูง = 200, scrollbars = no"); console.log ("ตรวจสอบปิดก่อน op และ val คือ:"+aa.closed); // หน้าต่างไม่ได้ปิดในขณะนี้ผลลัพธ์เป็นเท็จ aa.close (); // การเรียกวิธีการปิดหน้าต่างคอนโซลล็อก ("ไม่ได้อยู่ในการรอและวาลคือ:"+aa.closed); // ในเวลานี้ 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>รหัสที่ปิดหน้าต่างโดยอัตโนมัติเปิดเมื่อปิดหน้าต่างพาเรนต์
<html> <head> <script language = "JavaScript"> var aa; VAR IntervalVar; window.onbeforeunload = function (เหตุการณ์) {aa.close (); กลับ "สวัสดี"; } function loadform () {aa = window.open ('test.htm', 'windowname', "width = 200, ความสูง = 200, scrollbars = no"); - ฟังก์ชั่น unloadform () {แจ้งเตือน ("2!"); } </script> </head> <body onload = "loadform ()" onunload = "unloadform ()"> <a href = "test.htm"> โทร </a> </body> </html>