有没有办法触发mousemove并获取event.pageX,event.pageY?

新手上路,请多包涵

所以,就像问题指定的那样,有没有办法在 jQuery 中触发 mousemove 事件,它也会将鼠标坐标发送到事件对象?

So far my code can trigger the mousemove using the .trigger(event) function but the event.pageX and event.pageY are undefined.

原文由 Geo P 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 328
2 个回答

我认为不可能通过 JavaScript / jQuery 按需获取鼠标坐标;但是,如果您将位置绑定到全局变量,则可以在整个文档中随时访问它们,如下所示:

 $(document).ready(function(){
   $().mousemove(function(e){
      window.xPos = e.pageX;
      window.yPos = e.pageY;
   });
});

对于 CPU 密集度较低的选项,您可以添加超时,尽管您以性能为代价来稍微延迟了解鼠标的位置:

 function getMousePosition(timeoutMilliSeconds) {
    $(document).one("mousemove", function (event) {
        window.xPos = event.pageX;
        window.yPos = event.pageY;
        setTimeout("getMousePosition(" + timeoutMilliSeconds + ")", timeoutMilliSeconds);
    });
}
getMousePosition(100);

您现在应该能够使用任一解决方案从文档中的任何位置访问 window.xPos 和 window.yPos,而无需触发虚假事件。

原文由 dSquared 发布,翻译遵循 CC BY-SA 3.0 许可协议

您需要在触发事件之前直接设置 pageXpageY 。要设置这些属性,请创建一个 jQuery.Event 对象。

 // create a jQuery event
e = $.Event('mousemove');

// set coordinates
e.pageX = 100;
e.pageY = 100;

// trigger event - must trigger on document
$(document).trigger(e);

在 jsFiddle 中查看

原文由 tenedor 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏