在网上搜了一下,大部分是这两种方法,
第一个alert和第二个alert,
现在测试第一个是可以的,刷新的时候是false,关闭的时候是true。win7 ie9测试。
但问题是在win8 ie10上面各种都不行,无论是刷新还是关闭,无论是第一个还是第二个,全是true。求大神解决方法。

解决方案 »

  1.   

    window.onbeforeunload=function(){
    alert(event.clientX>document.body.clientWidth);
    alert(event.clientY);//唯独这句两处不一样,本机win7 ie9刷新是正数,关闭是负数;
    //虚拟机win8 ie10刷新关闭都是负数,所以就总是true
    alert(event.altKey);
    alert(event.clientX>document.body.clientWidth||event.clientY<0||event.altKey)
    }
      

  2.   


    为什么论坛里总是有人要有这种需求?
    在onbeforeunload里还能alert出来?判断鼠标位置有用么?浏览器地址栏旁边不照样有刷新按钮,点击同样能刷新,怎么就非得F5刷新了,不知LZ是如何区分点击的是关闭还是刷新?放弃吧,完全没有什么实际意义。
      

  3.   

    不知LZ是刻意要研究出区分刷新和关闭的方法,还是某个功能需求要用到这个?
    如果刻意要区分,我想说的是,区分这个没有什么用途。如果是某个奇葩功能要求判断出刷新和关闭,那么,使用结合后端的方法,或者其他方式,另辟蹊径去实现它吧。浏览器没有给出这个接口,说明区分刷新和关闭暂时是无关痛痒的。如果开发者呼吁声很大,估计浏览器就会给js这么个接口,那时候兴许你拿到event,直接用event里的某个属性就能判断。
      

  4.   

    不要激动...嘛。没办法啊,客户要求啊,再说我们这本来是可以的,但在ie10和特殊版本的ie9情况下event.clientY返回值不变就有问题了,看下这个http://connect.microsoft.com/IE/feedback/details/794228/kb2846071-breaks-event-clientx-and-event-clienty-properties-in-onbeforeunload-event-handlers-in-ie9-and-10]
      

  5.   


    好吧,让你们的客户见鬼去吧~~~
    ================
    我在chrome下测试了,onbeforeunload事件里的event没有clientX clientY。你们的客户是只要IE浏览器么?
      

  6.   

    恩,现在的想法就是通过浏览器上方点击刷新或者关闭的都会有提示,在body里面submit刷新的时候就没有提示,所以现在通过event.clientY来判断,但某些版本的ie9和ie10获取不到event.clientY,问题就是这个,http://connect.microsoft.com/IE/feedback/details/794228/kb2846071-breaks-event-clientx-and-event-clienty-properties-in-onbeforeunload-event-handlers-in-ie9-and-10