关闭窗口触发事件(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;


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

<pre name="code" class="javascript">if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)  
{  
	alert(这是关闭);
}else{
	alert(这是刷新);
}

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


你可能感兴趣的:(onLoad,onunload,onbeforeunload,窗口关闭事件)