即使当鼠标不移动时,Webkit和Safari也会触发mousemove
问题描述:
我已阅读关于在Safari/Webkit中触发两次mousemove
事件的问题,但我面临的问题是即使鼠标是也会触发mousemove
不移动。即:当鼠标光标位于页面加载/刷新时附加到事件上下文的上方时,它已经触发。并且因为我将它附加到document
(浏览器的整个视口),它会在Safari中立即启动。我试图将其附加到html
元素,body
和包装div
。不用找了。即使当鼠标不移动时,Webkit和Safari也会触发mousemove
$(document).bind('mousemove', function() {
alert('Mouse moved!');
$(document).unbind('mousemove');
});
在其他浏览器中工作正常。任何人看到我做错了什么?谢谢。
答
我知道这是一个肮脏的黑客攻击,但至少有以下几点:只需执行第二次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浏览器这一点。总之,使用其他浏览器的人不会注意到“延迟”,因为实际上不可能将鼠标移动一个像素。
我有同样的问题。 Cmd,ctrl alt,shift和caps lock也会触发mousemove事件(mac on safari 4)。在这里尝试一下:http://www.quirksmode.org//js/events/mousemove.html – 2010-04-12 13:17:35