2010-06-27 259 views
3

我試圖做一個google.com類似淡入(CEPT我想淡出文本)jQuery的鼠標移動()獲取無鼠標移動

<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script> 
    $(document).ready(function() { 
    $("html").mousemove(function() { 
     $("p").fadeOut("slow"); 
    }); 
    }); 
</script> 

與該代碼被激活,我淡出自動獲得雖然我沒有移動鼠標,但激活了。在所有瀏覽器中都會發生。有小費嗎?

+0

無法在Chrome 5,FF 3.6中重現。 – 2010-06-27 23:03:15

+0

這裏是一個例子http://www.ximnet.com.my/jquery/mousemove.htm – thegreyspot 2010-06-28 00:13:30

回答

5

由於該事件觸發一次開始,每次mousemove火災你移動一個像素,你可以只忽略第一個(可能是自動,依賴於瀏覽器)mousemove事件得到你想要的效果,像這樣:

$(function() { 
    var moveCount = 0; 
    $("html").mousemove(function() { 
    if(moveCount++ === 0) return; //first run? 
    $("p").fadeOut("slow"); 
    $(this).unbind('mousemove'); //unbind this, no need to stick around 
    }); 
});​ 

You can try a demo here,所有我們正在做的是忽略了mousemove事件的非常第一次點火,之後我們做了淡化和取消綁定該處理程序,以便它不爲將來mousemove點火運行,只是清理。

+0

我知道肯定的是,Firefox(至少3.x)不*觸發自動mousemove事件。因爲,有時候我想知道爲什麼Google搜索頁面沒有執行淡入。當然,因爲我沒有移動鼠標。任何需要修復的瀏覽器,因爲這只是意想不到的和奇怪的行爲。 – 2010-06-27 23:21:07

+0

酷尼克!這樣可行。 雖然如果鼠標位於網站區域(未移動),但在Chrome中會激活。 Firefox和IE工作正常。沒什麼大不了。再次感謝(**希望他可以給加一!) @喬治瑪麗安我不是唯一一個問題檢查http://forum.jquery.com/topic/mousemove-strange-behavior-in-ie是你確定谷歌使用jQuery的褪色? – thegreyspot 2010-06-28 00:11:50

+0

不,他們不使用jQuery:onmousemove =「google && google.fade && google.fade(event)」....任何想法是什麼關於jQuery或可能的各種方法鉤入事件是造成這種情況? – 2010-06-28 00:27:23

0

你確定沒有'微動'嗎?有時光學鼠標可能會導致運動只是注入灰塵或污垢。

+0

好點,但我沒有與其他情況下的問題(例如google.com) – thegreyspot 2010-06-28 00:14:08

1

看來,如果加載頁面並且鼠標在頁面上出現,那麼頁面加載後會觸發事件。嘗試將鼠標懸停在地址欄上或瀏覽器頂部菜單上的某處,使用F5刷新頁面,並注意事件未被觸發。同樣,嘗試使用F5刷新並立即右鍵單擊頁面。將鼠標懸停在頁面上,但確保上下文菜單仍處於打開狀態。一旦頁面加載完畢,不用移動鼠標,點擊鍵盤上的退出鍵,鼠標將退出上下文菜單並返回頁面。鼠標沒有移動,但在頁面上檢測到並且事件被觸發。

在Windows 7上使用Chrome 5進行測試。懶得嘗試其他瀏覽器,但我認爲它是同樣的事情。