背景:通过open方式打开子页面,希望父页面关闭的时候把子页面也关闭了。于是采用了给window绑定beforeunload事件的方案。然后,事情并不是想象的那样。坑爆了~快要提交测试的前一晚,发现并不是这样,想哭~
之前:我采用“给window绑定beforeunload事件”的方案,实现代码如下
$(window).bind('beforeunload',function(){
if(playerWin != null && playerWin.closed == false){
playerWin.close();
}
})如果说,我只有一个页面A,然后页面A打开了一个子页,当页面A关闭时,子页会被关闭。但是,我采用了iframe的技术,调用子页的页面A上面有好几个父页。当我通过remove移除这个页面A的时候,并没有触发到“beforeunload”事件。然后我发现,当我关闭了整个页面的时候,页面A还没有被移除的话,就会被触发这个事件。后来查了一下定义“onbeforeunload 事件:在即将离开当前页面(刷新或关闭)时触发”。可能我用remove的原因导致事件没有触发。然而,我没有时间深究了,第二天就要提交测试了。
现在:我采用了另一种方法,子页定时的判断父页是否还在。如果父页不在了就自己关掉自己。实现代码如下
function _ishasParent(){
if(window.opener == null || window.opener == undefined){
window.close();
}
setTimeout(function(){
_ishasParent();
},1000);
}自己测试过,基本达到了目的。发这个博客也是为了给自己提个醒。

239

被折叠的 条评论
为什么被折叠?



