【问题标题】:Difference in clientX and clientY when going out of the browser on ie/ff在ie/ff上退出浏览器时clientX和clientY的区别
【发布时间】:2023-03-20 02:37:01
【问题描述】:

我刚刚遇到了 clientX 和 clientY 的一个小问题。

我放了一个小事件来检测鼠标是否离开窗口并知道它在哪里退出。麻烦来了,它在 Firefox 上运行良好,但在 IE 中只发送 -1 作为答案。有人知道是否有办法在不使用框架的情况下轻松解决该问题?

一点点代码来重现它:

<html>
  <head>
    <script type="text/javascript">
 document.onmouseout=function(e){
  if (!e) var e = window.event;
  var relTarg = e.relatedTarget || e.toElement;
  if (!relTarg){
  document.getElementById('result1').innerHTML="e.clientY:"+e.clientY+" e.clientX:"+e.clientX;
  }
 };
    </script>

  </head>
  <body>
 <div id="result1">Not Yet</div>
  </body>
</html>

如果我从窗口左侧退出,结果是:

e.clientY:302 e.clientX:-130 on firefox

e.clientY:-1 e.clientX:-1 on ie。

提前致谢。

【问题讨论】:

    标签: javascript mouseout


    【解决方案1】:
    if(e.pageX)
        {
            _xmouse = e.pageX;
            _ymouse = e.pageY;
        }
        else
        {
            if(typeof(event) == "undefined") return;
            _xmouse = event.clientX + document.body.scrollLeft;
            _ymouse = event.clientY + document.body.scrollTop;
        }
    

    来自我的项目。认为这就是你所需要的

    【讨论】:

    • 嗯,这似乎不是我需要的,e.page(X|Y) 没有为ie定义。在没有滚动条的页面上,它与 e.client(X|Y) 相同
    【解决方案2】:

    嗯,不管怎样,e.clientX

    【讨论】:

    • 嗯实际上在IE中是这样,但在firefox中不是,例如如果您有一个宽度为1080px的文档,如果您从窗口右侧退出,则e.clientX将是在 1080 像素处有些优越。所以你可以很容易地知道你是否以这种方式从底部/顶部/左侧/右侧退出。在ie中,无论你从哪里退出,输出都是-1/-1
    猜你喜欢
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多