2012-12-30 33 views
11

JQuery'de farenin 3 saniyeliğine beklemediğini algılamanın bir yolu olup olmadığını merak ediyordum. Bilmediğim bir eklenti var mı? Çünkü yerel bir jQuery yöntemi olduğuna inanmıyorum. Herhangi bir yardım çok takdir edilecektir!jQuery - farenin hala mevcut olup olmadığını tespit edin.

+1

olası bir kopyası [Farenin hala javascript/jQuery içinde olup olmadığını belirle] (http://stackoverflow.com/questions/2487939/determine-if-mouse-is-still-in-javascript-jquery) –

cevap

25

Sen mousemove olayı dinlemek Görüldüğü zaman aşımı başlatmak ve mevcut zaman aşımı iptal edebilirsiniz.

DEMO

Bu

var timeout = null; 

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

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

çok kolay hem de jQuery olmadan da yapılabilir (burada sadece olay gidericisini bağlayıcı jQuery özgüdür).

+0

Teşekkür ederim ! Bu sadece aradığım şey. :-D – ModernDesigner

+0

Muhtemelen, bir 'clearTimeout() 'işlevini geçersiz kılmak için zamanlayıcıyı tetikledikten sonra' timeout'u tekrar' null 'olarak ayarlamak ister. – jfriend00

+0

@ jfriend00: Gerçekten önemli değil. http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-cleartimeout Hatta 'null' kontrol edin. – Ryan

9

yok bir eklenti olan ihtiyaç, hatta hiç jQuery için:

(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); 
})(); 
İlgili konular