2012-12-30 22 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

無効な 'clearTimeout()'の実行を避けるために、タイマーが起動した後に 'timeout'を' null'に戻したいと考えています。 – jfriend00

+0

@ jfriend00:本当に問題ありません。 http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-cleartimeout「ヌル」チェックでさえ。 – 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); 
})(); 
関連する問題