因为IE关闭或者刷新,都会调用onbeforeunload(),onunload()这两个事件
这就要求我们不得不在此事件中判断IE的事件操作,通过网上查询的资料,找到了几个方法,
都不太尽人意,不能完全满足要求,最后无奈,也没有找到方法,不过在此做下总结还是有点必要的。
首先,要屏蔽掉F5快捷键,因为下面的方法,是根据鼠标在什么位置操作,导致onbeforeunload(),onunload()
这两个事件的响应来判断IE是关闭还是刷新的,但是如果有F5的添乱,就没法用这种方法进行判断了!
方法1:
var n = window.event.screenX - window.screenLeft;
var b = n > document.documentElement.scrollWidth - 40; //40这个值,根据不同的浏览器,它的值不同。因为浏览器右上角的关闭叉,区域大小都不同,这个40只是按钮叉
//的宽度,可以适当设置大一些,只要小于会导致onbeforeunload(),onunload()会响应的按钮即可
if ((b && window.event.clientY < 0) || (window.event.screenY > document.body.clientHeight) || window.event.altKey)
{
// 此处为IE关闭
}
else
{
//其他情况为刷新
}
方法2(暂时不好用)
alert(event.clientX + ' ' + document.body.clientWidth + ' ' + event.clientY + ' ' + window.parent.document.body.clientHeight);
//用户点击浏览器右上角关闭按钮
if(event.clientX > document.body.clientWidth && event.clientY<0 || event.altKey)
{
// 此处为IE关闭}
//用户点击任务栏,右键关闭。
else if(event.clientY > window.parent.document.body.clientHeight || event.altKey)
{
// 此处为IE关闭
}
else
{
//此处为刷新
}
这种方法,对于在页面上调用showModaldialog后,event.clientX的值显示不正常,不知道什么原因,现在没时间了,以后查到,再补上。