检测鼠标何时不移动
答
设置超时当鼠标移动一个分进入未来,如果鼠标移动,清除超时:
var timeout;
document.onmousemove = function(){
clearTimeout(timeout);
timeout = setTimeout(function(){alert("move your mouse");}, 60000);
}
答
是否没有设置计时器在每次鼠标移动事件后开始递增的方法?
如果一分钟后弹出消息框,但每当鼠标移动时,计时器就会重置。
答
使用计时器在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 });
});
我看到一个潜在的问题:到setTimeout的每次调用返回的编号为计数器。它什么时候会环绕,然后会发生什么?我建议使用setInterval(update,1000),其中'update'增加了onmousemove事件重置的变量。如果变量在更新中超过60,提醒用户 – some 2009-03-04 11:05:25