11

我想知道是否有一种方法可以检测鼠标在 jQuery 中是否空闲 3 秒。有没有我不知道的插件?因为我不相信会有原生的 jQuery 方法。任何帮助将非常感激!

4

2 回答 2

30

您可以监听mousemove事件,在它发生时启动超时并取消任何现有的超时。

var timeout = null;

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

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

演示

这在没有 jQuery 的情况下也可以很容易地完成(这里仅绑定事件处理程序是 jQuery 特定的)。

于 2012-12-30T20:19:37.260 回答
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);
})();
于 2012-12-30T20:19:29.727 回答