2010-04-10 78 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瀏覽器這一點。總之,使用其他瀏覽器的人不會注意到「延遲」,因爲實際上不可能將鼠標移動一個像素。

相關問題