2012-12-30 20 views
11

Tôi đã tự hỏi nếu có một cách để phát hiện nếu con chuột nhàn rỗi trong 3 giây trong jQuery. Có một plugin mà tôi không biết? Bởi vì tôi không tin rằng có một phương pháp jQuery bản địa. Bất kì sự trợ giúp nào đều được đánh giá cao!jQuery - phát hiện nếu con chuột vẫn còn?

+1

có thể trùng lặp của [Xác định xem chuột có còn trong javascript/jQuery không?] (Http://stackoverflow.com/questions/2487939/determine-if-mouse-is-still-in-javascript-jquery) –

Trả lời

25

Bạn có thể nghe các sự kiện mousemove, bắt đầu một thời gian chờ bất cứ khi nào nó xảy ra và hủy bỏ bất kỳ thời gian chờ hiện có.

var timeout = null; 

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

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

DEMO

này có thể rất dễ dàng thực hiện mà không jQuery cũng (chỉ ràng buộc xử lý sự kiện ở đây là jQuery cụ thể).

+0

Cảm ơn bạn ! Đây chỉ là những gì tôi đang tìm kiếm. :-D – ModernDesigner

+0

Có lẽ muốn đặt 'timeout' trở về' null' sau khi bộ hẹn giờ kích hoạt để tránh thực hiện 'clearTimeout()' không hợp lệ. – jfriend00

+0

@ jfriend00: Không quan trọng, thực sự. http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-cleartimeout Ngay cả kiểm tra 'null'. – Ryan

9

Không cần một plugin, hoặc ngay cả đối với jQuery ở tất cả:

(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); 
})(); 
Các vấn đề liên quan