Heim > Artikel > Web-Frontend > JavaScript erkennt, ob das Fenster geschlossen ist, bevor das aktuelle Fenster geschlossen wird._javascript-Tipps
Erkennen Sie, ob das aktuelle Fenster geschlossen ist, bevor das aktuelle Fenster geschlossen wird
<pre name="code" class="html"><pre name="code" class="html"><HTML><HEAD> <script Language="JavaScript"> window.onbeforeunload=function(event){ alert("222"); //这里IE9会执行,CHROME不会执行 // if(event.clientX>document.body.clientWidth && event.clientY<0||event.altKey){ //如果是刷新,则不提示 RETURN "确定关闭窗口?"; // } } var aa ; var intervalVar; function showClose(){ console.log(" wait and val is :"+aa.closed); clearInterval(intervalVar); } function loadform(){ aa=window.open('foo.html', 'windowName',"width=200,height=200,scrollbars=no"); console.log("check close before op and val is :"+aa.closed); //现在窗口未关闭,结果为false aa.close();<span style="white-space:pre"> </span> //调用窗口关闭的方法 console.log("not in wait and val is :"+aa.closed); //此时aa.close正在调用过程中,结果为false intervalVar = setInterval(showClose,100); }; //用循环检测子窗口是否关闭,其实用setTimeout也是可以的,不过值要设得大一些 function unloadform(){ alert("2!"); } </script> </HEAD><BODY OnLoad="loadform()" OnUnload="unloadform()"> </BODY></HTML>
Wenn das Dokument in IE9 aktualisiert wird, werden sowohl unloadform als auch onbeforeunload ausgeführt. Wenn die Seite geschlossen ist, wird nur das onbeforeunload-Ereignis ausgeführt
Es ist zu beachten, dass onunload nicht ausgeführt wird, wenn die Seite geschlossen wird. Es wird geschätzt, dass diese Funktion ein integriertes Ereignis des Browsers ist und nicht neu definiert werden kann
Wenn Sie das Dokument aktualisieren, werden sowohl „unloadform“ als auch „onbeforeunload“ ausgeführt. Wenn Sie die Seite schließen, wird nur „onbeforeunload“ ausgeführt. Es ist zu beachten, dass die kommentierte Zeile niemals ausgeführt wird
Wenn es sich um ein untergeordnetes Fenster handelt, das von window.open geöffnet wird, können Sie mithilfe der Eigenschaft window.closed erkennen, ob es geschlossen ist
<HTML><HEAD> <script Language="JavaScript"> var aa ; var intervalVar; function showClose(){ console.log(" wait and val is :"+aa.closed); clearInterval(intervalVar); } function loadform(){ aa=window.open('foo.html', 'windowName',"width=200,height=200,scrollbars=no"); console.log("check close before op and val is :"+aa.closed); //现在窗口未关闭,结果为false aa.close(); //调用窗口关闭的方法 console.log("not in wait and val is :"+aa.closed); //此时aa.close正在调用过程中,结果为false intervalVar = setInterval(showClose,100); }; //用循环检测子窗口是否关闭,其实用setTimeout也是可以的,不过值要设得大一些 function 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(event){ aa.close(); return "hello"; } function loadform(){ aa=window.open('test.htm', 'windowName',"width=200,height=200,scrollbars=no"); }; function unloadform(){ alert("2!"); } </script> </HEAD><BODY OnLoad="loadform()" OnUnload="unloadform()"> <a href="test.htm">调用</a> </BODY></HTML>