关闭页面时同时执行onbeforeunload和onunload
1、先执行onbeforeunload,在页面还没关闭时执行,所以可以通过onbeforeunload阻止执行onunload,例如:
window.event.returnValue = ""; //这里可以放置你想做的操作代码
2、后执行onunload,是在页面关闭以后执行的
由于页面刷新和关闭都会执行这两个方法,如果只想在关闭页面的时候做某些操作,可以通过如下代码做判断(注意:仅仅支持IE6)
if(window.event.clientX <= 0 || window.event.clientY <=0)
{
alert("关闭");
}
else
{
alert("刷新");
}
在网上查了好多别的方法来判断是否是关闭页面,通过验证都不精确,典型的方法有
if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey||event.ctrlKey)
{
//判断event.altKey是为了Alt+F4关闭的情况;判断event.ctrlKey是为了Ctrl+W关闭的情况
//document.body.clientWidth不包括滚动条,而关闭按钮恰好在滚动条右侧。
window.event.returnValue="";
}
var n = window.event.screenX - window.screenLeft;
var b = n > document.documentElement.scrollWidth-20;
if(b && window.event.clientY < 0 || window.event.altKey)
{
alert("是关闭而非刷新");
window.event.returnValue = ""; //这里可以放置你想做的操作代码
}
以上这两种方法都是通过判断鼠标是否点击浏览器右上角的X来关闭页面,计算鼠标放在右上角的X的位置与浏览器右侧滚动条位置来判断是不精确的,如果把鼠标放在关闭按钮偏向还原按钮那边则判断不出来是关闭页面事件