2010-04-10 74 views
6

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

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

在其他浏览器中工作正常。任何人看到我做错了什么?谢谢。

+0

我有同样的问题。 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

回答

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浏览器这一点。总之,使用其他浏览器的人不会注意到“延迟”,因为实际上不可能将鼠标移动一个像素。

相关问题