确定事件之外的鼠标位置(使用jQuery)?

我需要像本教程中那样使用(最好是)jQuery获取绝对的鼠标位置/坐标(X和Y),但不包含任何JavaScript事件。 谢谢。

不可能。 但是,您可以在教程中使用相同的方法将位置存储在全局variables中,并在事件之外进行读取。

喜欢这个:

jQuery(document).ready(function(){ $().mousemove(function(e){ window.mouseXPos = e.pageX; window.mouseYPos = e.pageY; }); }) 

您现在可以从任何地方使用window.mouseXPoswindow.mouseYPos

这开始作为对Chetan Sastry的回答评论,但我意识到它也可能值得发布作为答案:

即使只是轮询光标位置,我也会小心处理文档级的,始终运行的mousemove事件。 这是一个很多的处理,并可能陷入任何浏览器,特别是像IE浏览器慢。

像这样的问题几乎肯定会引发devise决策的问题:如果您不需要处理鼠标事件来轮询光标位置,您是否真的需要光标位置? 有没有更好的方法来解决你正在试图解决的问题?

编辑:甚至在Safari 4中,这是(低调) 非常快 ,这个单一的mousemove事件使得与该教程页面的每一个交互显着波涛汹涌。 想想这将如何影响用户对您的网站或应用程序的看法。

此function将通过仅获取鼠标位置的时间间隔来减less对UI性能的影响:

 function getMousePosition(timeoutMilliSeconds) { // "one" attaches the handler to the event and removes it after it has executed once $(document).one("mousemove", function (event) { window.mouseXPos = event.pageX; window.mouseYPos = event.pageY; // set a timeout so the handler will be attached again after a little while setTimeout(function() { getMousePosition(timeoutMilliSeconds) }, timeoutMilliseconds); }); } // start storing the mouse position every 100 milliseconds getMousePosition(100); 

正如在另一个答案“你现在可以从任何地方使用window.mouseXPoswindow.mouseYPos ”。

由于在间隔期间不会检测到鼠标移动,因此您会失去一点精确度。

我已经尝试了@Chetan Sastry的解决scheme,但是它不起作用(我正在使用jQuery 1.6.4)。 我改变了代码,然后我现在工作。 这是我的代码。 我希望这将有所帮助。

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