浏览器窗口关闭可以使用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等属性,这些属性在窗口关闭事件中并不存在。原理虽然是正确的,根据鼠标点击位置判断窗口是否关闭。但是并不理想。
本文详细解析了浏览器窗口关闭事件的处理方式,包括window.close()的使用,以及onbeforeunload和onunload事件的区别与应用场景。并通过示例代码展示了如何在子窗口关闭时更新父窗口的数据。
2348

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



