javascript - 鼠标事件属性在 IE 11 上未定义

标签 javascript debugging window internet-explorer-11 eventhandler

我使用以下代码来识别浏览器窗口关闭事件并在其他浏览器上按预期工作,但在 IE11 上不起作用。因为这行代码只在 IE11 上给我 undefined alert(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();
    }
};

最佳答案

来自 MDN beforeunload event您可能会看到事件对象支持哪些属性。

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

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

我在 IE11、Chrome 48、FF 44 中测试了您的代码。

可能的解决方法是:

var clientX = 0;
var clientY = 0;
var scheduled = false;

window.onmousemove = function (event) {
  if (!scheduled) {
    scheduled = true;
    setTimeout(function () {
      event = event || window.event;
      clientX = event.clientX;
      clientY = event.clientY;
      scheduled = false;
    }, 1000);
  }
}

window.onbeforeunload = function (event) {
  alert(clientY+":"+clientX);
  if (clientX < 0 || clientY < 0) {
    // ajax call to server to nullify the session.
    window.close();
  }
};

关于javascript - 鼠标事件属性在 IE 11 上未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34350581/

相关文章:

bash - 将 -x 调试命令捕获到 Bash 中的文件中

安卓应用 : How to create a new window?

javascript - javascript中的String.fromCharCode(decimal value)是否也支持扩展字符

javascript - 如何解决流在 binary.js(BinaryStream.write)的 Node 服务器上不可写?

ios - 如何通过其指针获取 NSLayoutConstraints 标识符?

debugging - Visual Studio 2017 中的调试会拒绝访问

wpf - 如何删除窗口标题和内容之间的边框

batch-file - 如何批量测试STDIN是否为终端?

javascript - Knockout Observable Array 异步调用绑定(bind)顺序问题

javascript - 将原型(prototype)设置为另一个构造函数的实例是否合适?