Javascript IE 11上未定义鼠标事件属性
我使用以下代码来识别浏览器窗口关闭事件,并在其他浏览器上正常工作,但在IE11上不起作用。因为这行代码只在IE11上给出了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
未定义的警报(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回答了前面卸载部分的问题。