因为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的值显示不正常,不知道什么原因,现在没时间了,以后查到,再补上。