檢測(cè)窗口是否關(guān)閉,在當(dāng)前窗口關(guān)閉前使用js做到這一點(diǎn),下面是具體的實(shí)現(xiàn),感興趣的朋友可以參考下
在當(dāng)前窗口關(guān)閉前,檢測(cè)當(dāng)前窗口是否關(guān)閉
<pre name="code" class="html"><pre name="code" class="html"><HTML><HEAD>
<script Language="JavaScript">
window.onbeforeunload=function(event){
alert("222"); //這里IE9會(huì)執(zhí)行,CHROME不會(huì)執(zhí)行
// if(event.clientX>document.body.clientWidth && event.clientY<0||event.altKey){ //如果是刷新,則不提示
RETURN "確定關(guān)閉窗口?";
// }
}
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); //現(xiàn)在窗口未關(guān)閉,結(jié)果為false
aa.close();<span style="white-space:pre"> </span> //調(diào)用窗口關(guān)閉的方法
console.log("not in wait and val is :"+aa.closed); //此時(shí)aa.close正在調(diào)用過(guò)程中,結(jié)果為false
intervalVar = setInterval(showClose,100); }; //用循環(huán)檢測(cè)子窗口是否關(guān)閉,其實(shí)用setTimeout也是可以的,不過(guò)值要設(shè)得大一些
function unloadform(){ alert("2!"); }
</script>
</HEAD><BODY OnLoad="loadform()" OnUnload="unloadform()">
</BODY></HTML>
在ie9中,如果刷新文檔的話,unloadform和onbeforeunload都會(huì)執(zhí)行,如果是關(guān)閉頁(yè)面的話只會(huì)執(zhí)行onbeforeunload事件
值得注意的是,onunload在關(guān)閉頁(yè)面時(shí)不會(huì)運(yùn)行,估計(jì)此函數(shù)為瀏覽器內(nèi)置事件,不能重新定義
在chrome中,如果刷新文檔的話,unloadform和onbeforeunload都會(huì)執(zhí)行,關(guān)閉頁(yè)面的話,只會(huì)執(zhí)行onbeforeunload,值得注意的是有注釋的那一行一直不會(huì)執(zhí)行.
如果是window.open打開的子窗口的話,可以通過(guò)window.closed屬性檢測(cè)是否關(guān)閉
<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); //現(xiàn)在窗口未關(guān)閉,結(jié)果為false
aa.close(); //調(diào)用窗口關(guān)閉的方法
console.log("not in wait and val is :"+aa.closed); //此時(shí)aa.close正在調(diào)用過(guò)程中,結(jié)果為false
intervalVar = setInterval(showClose,100); }; //用循環(huán)檢測(cè)子窗口是否關(guān)閉,其實(shí)用setTimeout也是可以的,不過(guò)值要設(shè)得大一些
function unloadform(){ alert("2!"); }
</script>
</HEAD><BODY OnLoad="loadform()" OnUnload="unloadform()"> <a href="test.htm">調(diào)用</a>
</BODY></HTML>
父窗口關(guān)閉時(shí)會(huì)自動(dòng)將window.open關(guān)閉的代碼
?
<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">調(diào)用</a>
</BODY></HTML>