jQuery - определить, есть ли мышь?

Мне было интересно, есть ли способ обнаружить, что мышь простаивает как 3 секунды в jQuery. Есть ли плагин, о котором я не знаю? Потому что я не верю, что есть собственный метод jQuery. Любая помощь приветствуется!

Ответы

Ответ 1

Вы можете прослушивать событие mousemove, запускать тайм-аут всякий раз, когда это происходит, и отменить любой существующий тайм-аут.

var timeout = null;

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

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

DEMO

Это можно легко сделать без jQuery (только привязка обработчика события здесь jQuery-specific).

Ответ 2

Нет необходимости в плагине или даже для 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);
})();