6

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

$(document).bind('mousemove', function() {
  alert('Mouse moved!');
  $(document).unbind('mousemove');
});

在其他浏览器中确实可以正常工作。有人看到我做错了吗?谢谢。

4

1 回答 1

1

我知道这是一个肮脏的黑客,但至少这是一些事情:只需执行第二次mousemove触发的回调函数。

var $document = $(document), i = 0;
$document.bind('mousemove', function() {
 if (++i > 1) {
  alert('Mouse moved!');
  $document.unbind('mousemove');
 };
});

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

值得一提的是,Safari 并不是唯一mousemove在页面加载时触发的浏览器——IE 也是如此。无论如何,使用其他浏览器的人不会注意到“延迟”,因为几乎不可能只移动鼠标一个像素。

于 2010-04-22T09:34:12.483 回答