2012-12-30 18 views
11

मैं सोच रहा था कि माउस का पता लगाने का कोई तरीका है कि माउस jQuery में 3 सेकंड की तरह निष्क्रिय है या नहीं। क्या कोई प्लगइन है जिसे मैं अनजान हूं? क्योंकि मैं एक मूल jQuery विधि होने पर विश्वास नहीं करता हूं। कोई भी सहायताकाफी प्रशंसनीय होगी!jQuery - पता लगाएं कि माउस अभी भी है या नहीं?

+1

संभावित डुप्लिकेट [निर्धारित करें कि माउस अभी भी जावास्क्रिप्ट/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

धन्यवाद ! यह ठीक वही है जिसकी तलाश मुझे थी। :- डी – ModernDesigner

+0

टाइमर आग को अमान्य 'clearTimeout()' से बचने के लिए आग लगने के बाद शायद 'टाइमआउट' को 'शून्य' पर सेट करना चाहते हैं। – 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); 
})(); 
संबंधित मुद्दे