即使鼠标不移动,Webkit和Safari也会移动鼠标

Roe*_*oel 6 javascript jquery javascript-events mousemove

我已经读过mousemove在Safari/Webkit中两次触发事件的问题,但是我面临的问题是mousemove即使鼠标没有移动也会触发.也就是说:当鼠标光标位于加载/刷新页面时附加事件的上下文之上时,它已经触发.因为我将它附加到document(浏览器的整个视口),它会立即在Safari中激活.我试图将它附加到html元素,body包装和包装上div.没变.

$(document).bind('mousemove', function() {
  alert('Mouse moved!');
  $(document).unbind('mousemove');
});
Run Code Online (Sandbox Code Playgroud)

在其他浏览器中是否可行.有谁看到我做错了什么?谢谢.

Mat*_*ens 1

我知道它\xe2\x80\x99是一个肮脏的黑客,但至少这是这样的:只需在第二次mousemove触发时执行回调函数即可。

\n\n
var $document = $(document), i = 0;\n$document.bind(\'mousemove\', function() {\n if (++i > 1) {\n  alert(\'Mouse moved!\');\n  $document.unbind(\'mousemove\');\n };\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

演示: http: //fiddle.jshell.net/Yz5Bd/show/light/

\n\n

就其价值而言,Safari 并不是唯一mousemove在页面加载时触发的浏览器,IE 也会这样做。无论如何,使用其他浏览器的人不会注意到\xe2\x80\x98delay\xe2\x80\x99,因为\xe2\x80\x99几乎不可能将鼠标移动一个像素。

\n