检测鼠标何时不移动

问题描述:

我能找到光标位置。但我需要找出鼠标是否稳定。如果鼠标没有移动超过1分钟,那么我们必须提醒用户。检测鼠标何时不移动

如何可能,有没有特别的事件呢? (仅针对IE中的javascript)

设置超时当鼠标移动一个分进入未来,如果鼠标移动,清除超时:

var timeout; 
document.onmousemove = function(){ 
    clearTimeout(timeout); 
    timeout = setTimeout(function(){alert("move your mouse");}, 60000); 
} 
+0

我看到一个潜在的问题:到setTimeout的每次调用返回的编号为计数器。它什么时候会环绕,然后会发生什么?我建议使用setInterval(update,1000),其中'update'增加了onmousemove事件重置的变量。如果变量在更新中超过60,提醒用户 – some 2009-03-04 11:05:25

是否没有设置计时器在每次鼠标移动事件后开始递增的方法?

如果一分钟后弹出消息框,但每当鼠标移动时,计时器就会重置。

使用计时器在mousemove事件上重置其值。 如果计时器达到1分钟 - >执行某些操作。在定时器这里http://www.w3schools.com/js/js_timing.asp
等详细信息

更多信息上捉鼠标事件这里http://www.quirksmode.org/js/events_mouse.html

可以使用的OnMouseMove事件。在它里面,clearTimeout()和setTimeout(your_warning,1分钟)。

您可以使用this script/snippet来检测鼠标指针位置并“记住”它。然后使用计时器“setTimeout(...)”来检查每秒钟的位置并记住那个时间。

如果超过一分钟过去了,并且位置没有改变,您可以提醒用户。

是的,你必须在JavaScript中的OnMouseMove事件,所以要达到什么你需要你只需要做这样的代码:

startTimer(); 
element.onmousemove = stopTimer(); //this stops and resets the timer 

例如,你可以在文档主体标签上使用它。

更新:@Marius已经取得了比这个更好的例子。

这里有一个一和完成功能,可以检查任何元素的运动:

function mouse (element, delay, callback) { 

    // Counter Object 
    element.ms = {}; 

    // Counter Value 
    element.ms.x = 0; 

    // Counter Function 
    element.ms.y = function() { 

     // Callback Trigger 
     if ((++element.ms.x) == delay) element.ms.callback(element, element.ms); 
    }; 

    // Counter Callback 
    element.ms.callback = callback; 

    // Function Toggle 
    element.ms.toggle = function (state) { 

     // Stop Loop 
     if ([0, "off"][state]) clearInterval(element.ms.z); 

     // Create Loop 
     if ([1, "on"][state]) element.ms.z = setInterval(element.ms.y, 1); 
    }; 

    // Function Disable 
    element.ms.remove = function() { 

     // Delete Counter Object 
     element.ms = null; return delete element.ms; 
    }; 

    // Function Trigger 
    element.onmousemove = function() { 

     // Reset Counter Value 
     element.ms.x = -1; 
    }; 

    // Return 
    return element.ms; 
}; 

用法: mouse(element, delay, callback)

例子: 进行视频播放器隐藏空闲和全屏时5秒后的鼠标

let x = mouse(video, 5000, function (a) { 
    if (document.webkitIsFullScreen) video.style.cursor = "none"; 
}); 

x.toggle(1); addEventListener("mousemove", function() { 
    video.style.cursor = "auto"; 
}); 

聊天室AFK(45秒)(假设你有一个聊天框和发送消息功能):

let x = mouse(chatBox, (45e3), function (a) { 
    chatBox.send({ text: chatBox.username + " is AFK.", italic: true }); 
}); 

x.toggle(1); x.addEventListener("mousemove", function() { 
    chatBox.send({ text: chatBox.username + " is no longer AFK", italic: true }); 
});