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 に答える