Javascript 检测鼠标何时不移动
我能够找到光标的位置。但我需要知道老鼠是否稳定。如果鼠标没有移动超过1分钟,那么我们必须提醒用户Javascript 检测鼠标何时不移动,javascript,events,mouse,Javascript,Events,Mouse,我能够找到光标的位置。但我需要知道老鼠是否稳定。如果鼠标没有移动超过1分钟,那么我们必须提醒用户 怎么可能,有什么特别的活动吗?(仅适用于javascript中的IE)是否有办法设置计时器以在每次鼠标移动事件后开始递增 如果到了一分钟,则弹出消息框,但每次鼠标移动时,计时器都会重置。使用计时器在mousemove事件中重置其值。 如果计时器达到1分钟-->请执行某些操作 有关计时器的更多信息,请点击此处 有关捕捉鼠标事件的更多信息,请参见此处您可以使用onmousemove事件。在它里面,cle
怎么可能,有什么特别的活动吗?(仅适用于javascript中的IE)是否有办法设置计时器以在每次鼠标移动事件后开始递增
如果到了一分钟,则弹出消息框,但每次鼠标移动时,计时器都会重置。使用计时器在mousemove事件中重置其值。 如果计时器达到1分钟-->请执行某些操作 有关计时器的更多信息,请点击此处
有关捕捉鼠标事件的更多信息,请参见此处您可以使用onmousemove事件。在它里面,clearTimeout()和setTimeout(你的警告,1分钟)。你可以用来检测鼠标指针的位置并“记住”它。然后使用计时器“setTimeout(…)”检查位置,比如说每秒钟检查一次,并记住该时间
如果超过一分钟且位置没有改变,您可以提醒用户。在鼠标移动一分钟后设置超时,如果鼠标移动,则清除超时:
var timeout;
document.onmousemove = function(){
clearTimeout(timeout);
timeout = setTimeout(function(){alert("move your mouse");}, 60000);
}
是的,您在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;
};
用法:
鼠标(元素、延迟、回调)
示例:
使视频播放器在空闲和全屏状态下5秒后隐藏鼠标
聊天室AFK(45秒)(假设您有聊天室和发送消息功能):
我发现了一个潜在的问题:每次调用setTimeout都会返回一个计数器的数字。什么时候结束,然后会发生什么?我建议改为使用setInterval(update,1000),其中“update”增加onmousemove事件重置的变量。如果变量在更新中超过60,则提醒用户
let x = mouse(video, 5000, function (a) {
if (document.webkitIsFullScreen) video.style.cursor = "none";
});
x.toggle(1); addEventListener("mousemove", function () {
video.style.cursor = "auto";
});
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 });
});