Javascript Webkit和Safari即使在鼠标不移动时也会启动鼠标移动';别动
我曾读到过Safari/Webkit中两次触发Javascript Webkit和Safari即使在鼠标不移动时也会启动鼠标移动';别动,javascript,jquery,jquery-events,mousemove,Javascript,Jquery,Jquery Events,Mousemove,我曾读到过Safari/Webkit中两次触发mousemove事件的问题,但我面临的问题是,即使鼠标未移动,也会触发mousemove。也就是说:当鼠标光标位于加载/刷新页面时事件附加到的上下文上方时,它已经触发。因为我将它附加到文档(浏览器的整个视口),所以它会在Safari中立即启动。我尝试将它附加到html元素、主体和包装器div。没有变化 $(document).bind('mousemove', function() { alert('Mouse moved!'); $(do
mousemove
事件的问题,但我面临的问题是,即使鼠标未移动,也会触发mousemove
。也就是说:当鼠标光标位于加载/刷新页面时事件附加到的上下文上方时,它已经触发。因为我将它附加到文档
(浏览器的整个视口),所以它会在Safari中立即启动。我尝试将它附加到html
元素、主体和包装器div
。没有变化
$(document).bind('mousemove', function() {
alert('Mouse moved!');
$(document).unbind('mousemove');
});
Is在其他浏览器中也可以正常工作。有人看到我做错了什么吗?谢谢。我知道这是一个肮脏的黑客行为,但至少是这样:只要在第二次启动mousemove
时执行回调函数即可
var $document = $(document), i = 0;
$document.bind('mousemove', function() {
if (++i > 1) {
alert('Mouse moved!');
$document.unbind('mousemove');
};
});
演示:
值得一提的是,Safari并不是唯一一款在页面加载时启动mousemove
的浏览器——IE也这样做。无论如何,使用其他浏览器的人不会注意到“延迟”,因为实际上不可能只移动鼠标一个像素。我也有同样的问题。Cmd、ctrl-alt、shift和caps-lock也会触发mousemove事件(mac上的safari 4)。在这里尝试一下: