题
我能找到光标位置。但我需要找出鼠标是否稳定。如果鼠标移动时间超过1分钟,则必须提醒用户。
如何可能,是否有任何特殊事件? (仅适用于javascript中的IE)
解决方案
将鼠标移动一分钟后设置超时,如果移动鼠标,请清除超时:
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
是的,你在Javascript中有一个onmousemove事件,所以要实现你所需要的,你只需要做这样的代码:
startTimer();
element.onmousemove = stopTimer(); //this stops and resets the timer
例如,您可以在文档正文标记上使用它。
更新:@Marius取得了比这更好的例子。
您可以使用onmousemove事件。在其中,clearTimeout()和setTimeout(your_warning,1分钟)。
您可以使用此脚本/代码段来检测鼠标指针的位置和“记住”它。然后使用计时器“setTimeout(...)”。检查位置让我们说每一秒并记住那个时间。
如果超过一分钟并且位置没有改变,您可以提醒用户。
这是一个完成功能,可以检查任何移动元素:
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(元素,延迟,回调)
<强>示例:强> 让视频播放器在空闲和全屏<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 });
});
不隶属于 StackOverflow