Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE 11上未定义鼠标事件属性_Javascript_Debugging_Window_Internet Explorer 11_Eventhandler - Fatal编程技术网

Javascript IE 11上未定义鼠标事件属性

Javascript IE 11上未定义鼠标事件属性,javascript,debugging,window,internet-explorer-11,eventhandler,Javascript,Debugging,Window,Internet Explorer 11,Eventhandler,我使用以下代码来识别浏览器窗口关闭事件,并在其他浏览器上正常工作,但在IE11上不起作用。因为这行代码只在IE11上给出了未定义的警报(event.clientY+:“+event.clientX)。请任何人提出解决此问题的建议 window.onbeforeunload = function(event) { event= window.event|| event; alert(event); alert(event.clientY+":"+event.clientX); if(e

我使用以下代码来识别浏览器窗口关闭事件,并在其他浏览器上正常工作,但在IE11上不起作用。因为这行代码只在IE11上给出了
未定义的
警报(event.clientY+:“+event.clientX)。请任何人提出解决此问题的建议

window.onbeforeunload = function(event) 
{
event= window.event|| event;
alert(event);
alert(event.clientY+":"+event.clientX);

    if(event.clientX <0 || event.clientY < 0)
    {   
        // ajax call to server to nullify the session.
        window.close();
    }
};
window.onbeforeunload=函数(事件)
{
事件=窗口。事件| |事件;
警报(事件);
警报(event.clientY+:“+event.clientX);

如果(event.clientX事件对象定义了两次:

event = window.event || event;
但此处未使用参考:

if(window.event.clientX < 0 || window.event.clientY < 0)
if(window.event.clientX<0 | | window.event.clientY<0)
因此IE失败,因为代码应该是:

if(event.clientX < 0 || event.clientY < 0)
if(event.clientX<0 | | event.clientY<0)
从MDN中,您可以看到事件对象支持哪些属性

不支持事件对象的clientX和clientY,因此它们未定义

在Chrome和FF中也会发生这种情况,因为onbeforeunload事件不包含此类信息(位置X和Y)

我在IE11,Chrome 48,FF 44中测试了你的代码

一个可能的解决办法可能是:

var clientX=0;
var-clientY=0;
var=false;
window.onmousemove=函数(事件){
如果(!已计划){
预定=真;
setTimeout(函数(){
event=event | | window.event;
clientX=event.clientX;
clientY=event.clientY;
预定=假;
}, 1000);
}
}
window.onbeforeunload=函数(事件){
警报(clientY+:“+clientX);
if(clientX<0 | | clientY<0){
//ajax调用服务器以使会话无效。
window.close();
}

} /<代码>不可能的复制品,我的问题是IE 11而不是IE8SO…如果我的光标在屏幕的中间,我击中ALT+F4会发生什么?@ PyrLogic GAMAF回答了前面卸载部分的问题。