浏览器窗口关闭可以使用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等属性,这些属性在窗口关闭事件中并不存在。原理虽然是正确的,根据鼠标点击位置判断窗口是否关闭。但是并不理想。