2012-12-30 2 views
11

jQuery에서 마우스가 3 초 동안 유휴 상태인지 감지하는 방법이 있는지 궁금합니다. 내가 알지 못하는 플러그인이 있습니까? 왜냐하면 네이티브 jQuery 메서드가 있다고 생각하지 않기 때문입니다. 어떤 도움을 많이 주시면 감사하겠습니다!jQuery - 마우스가 여전히 있는지 확인 하시겠습니까?

+1

[자바 스크립트/jQuery에 마우스가 있는지 확인 하시겠습니까?] (http://stackoverflow.com/questions/2487939/determine-if-mouse-is-still-in-javascript-jquery) –

답변

25

당신은의 mousemove 이벤트를 수신이 발생할 때마다 타임 아웃을 시작하고 기존의 타임 아웃을 취소 할 수 있습니다.

DEMO

var timeout = null; 

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

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

이 아주 쉽게뿐만 아니라 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 '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); 
})(); 
관련 문제