我能够找到光标位置。但是我需要确定鼠标是否稳定。如果鼠标超过 1 分钟没有移动,那么我们必须提醒用户。
这怎么可能,有什么特别活动吗?(仅适用于 JavaScript 中的 IE)
我能够找到光标位置。但是我需要确定鼠标是否稳定。如果鼠标超过 1 分钟没有移动,那么我们必须提醒用户。
这怎么可能,有什么特别活动吗?(仅适用于 JavaScript 中的 IE)
当鼠标在未来一分钟移动时设置超时,如果鼠标移动,则清除超时:
var timeout;
document.onmousemove = function(){
clearTimeout(timeout);
timeout = setTimeout(function(){alert("move your mouse");}, 60000);
}
这是一个一次性的功能,可以检查任何元素的移动:
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 });
});
有没有办法设置计时器在每次鼠标移动事件后开始递增?
如果达到一分钟,则弹出消息框,但每次鼠标移动计时器都会重置。
使用在 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(...)”来检查位置,比如说每秒并记住那个时间。
如果超过一分钟并且位置没有改变,您可以提醒用户。