قبل إغلاق النافذة الحالية ، تحقق مما إذا كانت النافذة الحالية مغلقة
<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 ؛ وظيفة 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) ؛ // لم يتم إغلاق النافذة الآن ، والنتيجة خاطئة aa.close () ؛ <span style = "White-Space: Pre"> </span> // استدعاء طريقة Console.log لإغلاق النوافذ ("لا في الانتظار و Val هو:"+aa.closed) ؛ //aa.close في عملية الاتصال ، والنتيجة هي الفاصل الزائف = setInterval (showclose ، 100) ؛ } ؛ // استخدم حلقة لاكتشاف ما إذا كان الريف الفرعي مغلقًا. في الواقع ، لا بأس في استخدام setTimeOut ، ولكن يجب تعيين القيمة وظيفة أكبر unloadform () {Alert ("2!") ؛ } </script> </head> <body onload = "loadform ()" onUnload = "unloadform ()"> </body> </html>في IE9 ، إذا تم تحديث المستند ، فسيتم إلغاء تحميله وسيتم تنفيذ OnBeforeUnload. إذا تم إغلاق الصفحة ، فسيتم تنفيذ OnBeOnload فقط.
تجدر الإشارة إلى أن OnUnload لن يتم تشغيله عند إغلاق الصفحة. تشير التقديرات إلى أن هذه الوظيفة هي حدث مدمج في المتصفح ولا يمكن إعادة تعريفه.
في Chrome ، إذا تم تحديث المستند ، فسيتم تنفيذ كل من Unloadform و OnBeforeUnload. إذا تم إغلاق الصفحة ، فسيتم تنفيذ OnBeOnload فقط. تجدر الإشارة إلى أنه لن يتم تنفيذ الخط المعلق.
إذا كانت نافذة طفل تم فتحها بواسطة Window.Open ، فيمكنك استخدام Window.closed Property للتحقق مما إذا كانت مغلقة.
<html> <head> <script language = "javaScript"> var aa ؛ var intervalvar ؛ وظيفة 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) ؛ // لم يتم إغلاق النافذة الآن ، والنتيجة خاطئة aa.close () ؛ // استدعاء طريقة إغلاق النوافذ. // في هذا الوقت ، يكون AA.Close في طور الاتصال ، والنتيجة هي الفاصل الزائف = setInterval (showclose ، 100) ؛ } ؛ // استخدم الحلقة لاكتشاف ما إذا كانت النافذة الفرعية مغلقة ، في الواقع ، من الجيد استخدام setTimeOut ، ولكن يجب ضبط القيمة على وظيفة تفريغ أكبر () {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") ؛ } ؛ وظيفة unloadform () {Alert ("2!") ؛ } </script> </head> <body onload = "loadform ()" onUnload = "unloadform ()"> <a href = "test.htm"> call </a> </body> </html>