Javascript 检测鼠标何时不移动

Javascript 检测鼠标何时不移动,javascript,events,mouse,Javascript,Events,Mouse,我能够找到光标的位置。但我需要知道老鼠是否稳定。如果鼠标没有移动超过1分钟,那么我们必须提醒用户 怎么可能,有什么特别的活动吗?(仅适用于javascript中的IE)是否有办法设置计时器以在每次鼠标移动事件后开始递增 如果到了一分钟,则弹出消息框,但每次鼠标移动时,计时器都会重置。使用计时器在mousemove事件中重置其值。 如果计时器达到1分钟-->请执行某些操作 有关计时器的更多信息,请点击此处 有关捕捉鼠标事件的更多信息,请参见此处您可以使用onmousemove事件。在它里面,cle

我能够找到光标的位置。但我需要知道老鼠是否稳定。如果鼠标没有移动超过1分钟,那么我们必须提醒用户


怎么可能,有什么特别的活动吗?(仅适用于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 });
});