关闭窗口触发事件(onunload和unbeforeunload)

浏览器窗口关闭可以使用window.close(),但并没有与之相对应的事件,页面加载也是使用onload事件监听。

onunload和unbeforeunload事件都是在页面刷新或关闭的时候执行的。


这两个事件的区别:

  1.onunload事件是已经从服务器读取到了数据,在替换到当前页面之前执行的。

     onbeforeunload事件是正要去服务器读取数据还没有读取到页面数据时执行的,因此onbeforeunload事件优先于onunload事件执行,可以阻止onunload事件的执行。


  2.onunload事件在窗口打开、刷新、关闭时都会执行。

     onbeforeunload事件在新窗口被打开的时候并不会执行,只在刷新和关闭时执行

//打开属性窗口
var childWindow = window.open(getContextPath()+"/js/d3tree/components/TemplateTransform/TemplateTransformNew.html");
//子窗口关闭时,将属性赋值给操作对象
childWindow.onbeforeunload = function(event){
	var operatorObjStr = childWindow.sessionStorage.operatorObj;
	var currentOperatorObj = JSON.parse(operatorObjStr);
	//修改子窗口属性
	operatorObj.components = currentOperatorObj.components;
	operatorObj.description = currentOperatorObj.description;
	changeD3TreeNodeText();
}


网上看到很多人再说IE下关闭窗口会出现提示栏,屏蔽提示栏的方法为:

window.openr = null;


还有人在说判断是否为关闭或刷新。

if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)  
{  
	alert(这是关闭);
}else{
	alert(这是刷新);
}

但是经我测试发现,event事件中并不能获取到clientX等属性,这些属性在窗口关闭事件中并不存在。原理虽然是正确的,根据鼠标点击位置判断窗口是否关闭。但是并不理想。 



  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值