Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-检测鼠标是否静止?_Javascript_Jquery_Plugins_Mouse - Fatal编程技术网

Javascript jQuery-检测鼠标是否静止?

Javascript jQuery-检测鼠标是否静止?,javascript,jquery,plugins,mouse,Javascript,Jquery,Plugins,Mouse,我想知道是否有办法在jQuery中检测鼠标是否空闲3秒钟。有没有我不知道的插件?因为我认为不存在原生jQuery方法。任何帮助都将不胜感激 不需要插件,甚至根本不需要jQuery: (function() { var idlefunction = function() { // what to do when mouse is idle }, idletimer, idlestart = function() {idletimer =

我想知道是否有办法在jQuery中检测鼠标是否空闲3秒钟。有没有我不知道的插件?因为我认为不存在原生jQuery方法。任何帮助都将不胜感激

不需要插件,甚至根本不需要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);
})();

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

var timeout = null;

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

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


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

可能重复感谢!这正是我要找的-d可能希望在计时器触发后将
超时设置回
null
,以避免执行无效的
clearTimeout()
@jfriend00:真的没关系。即使是
null
检查。@FelixKling OK,所以我所做的就是将它与jScrollPane插件结合使用,这样,如果用户空闲3秒钟,滚动条就会消失在视野之外。当用户不空闲时,如何使其重新出现?(例如,当他/她移动鼠标时?)我尝试创建一个完全独立的函数,但它不起作用。@ModernDesigner:只需将其放入事件处理程序中即可。每当鼠标移动时就会触发
mousemove
事件(如上所述),即不再空闲。看看我是如何删除演示中的文本的。