2012-12-30 76 views
11

我想知道是否有一種方法來檢測在jQuery中鼠標是否空閒3秒鐘。有沒有我不知道的插件?因爲我不相信有一個原生的jQuery方法。任何幫助將非常感激!jQuery - 檢測鼠標是否仍然存在?

+1

[確定鼠標是否仍然在javascript/jQuery中?](http://stackoverflow.com/questions/2487939/determine-if-mouse-is-still-in-javascript-jquery) –

回答

25

你可以聽mousemove事件,一旦發生任何啓動超時而取消任何現有超時。

var timeout = null; 

$(document).on('mousemove', function() { 
    clearTimeout(timeout); 

    timeout = setTimeout(function() { 
     console.log('Mouse idle for 3 sec'); 
    }, 3000); 
}); 

DEMO

這可以在不jQuery的很容易實現,以及(僅結合這裏的事件處理程序的jQuery專用)。

+0

謝謝!這正是我正在尋找的。 :-D – ModernDesigner

+0

可能想要在定時器觸發後將'timeout'設置回'null',以避免執行無效的'clearTimeout()'。 – jfriend00

+0

@ jfriend00:沒關係,真的。 http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-cleartimeout即使是'null'檢查。 – Ryan

9

無需插件,甚至jQuery的根本:

(function() { 
    var idlefunction = function() { 
      // what to do when mouse is idle 
     }, idletimer, 
     idlestart = function() {idletimer = setTimeout(idlefunction,3000);}, 
     idlebreak = function() {clearTimeout(idletimer); idlestart();}; 
    if(window.addEventListener) 
     document.documentElement.addEventListener("mousemove",idlebreak,true); 
    else 
     document.documentElement.attachEvent("onmousemove",idlebreak,true); 
})(); 
相關問題