检测鼠标何时不移动

时间:2009-03-04 10:15:51

标签: javascript events mouse

我能找到光标位置。但我需要找出鼠标是否稳定。如果鼠标移动时间超过1分钟,则必须提醒用户。

如何可能,是否有任何特殊事件? (仅适用于javascript中的IE)

7 个答案:

答案 0 :(得分:42)

将鼠标移动一分钟后设置超时,如果移动鼠标,请清除超时:

var timeout;
document.onmousemove = function(){
  clearTimeout(timeout);
  timeout = setTimeout(function(){alert("move your mouse");}, 60000);
}

答案 1 :(得分:1)

在每次鼠标移动事件后,是否没有办法设置计时器开始递增?

如果它达到一分钟然后弹出消息框,但每次鼠标移动时,计时器都会重置。

答案 2 :(得分:1)

使用计时器重置其在mousemove事件上的值。 如果计时器达到1分钟 - >做点什么。

计时器的更多信息http://www.w3schools.com/js/js_timing.asp
有关捕获鼠标事件的更多信息http://www.quirksmode.org/js/events_mouse.html

答案 3 :(得分:1)

是的,你在Javascript中有一个onmousemove事件,所以要实现你所需要的,你只需要做这样的代码:

startTimer();
element.onmousemove = stopTimer(); //this stops and resets the timer

例如,您可以在文档正文标记上使用它。

更新:@Marius取得了比这更好的例子。

答案 4 :(得分:0)

您可以使用onmousemove事件。在其中,clearTimeout()和setTimeout(your_warning,1分钟)。

答案 5 :(得分:0)

您可以使用this script/snippet来检测鼠标指针位置并“记住”它。然后使用计时器“setTimeout(...)”检查位置让我们说每一秒并记住那个时间。

如果超过一分钟并且位置没有改变,您可以提醒用户。

答案 6 :(得分:0)

Here's a one-and-done function that can check any element for movement:

csproj

Usage: <div class="menu-container"> <img src="https://via.placeholder.com/300x150.jpg"> <ul> <li></li> <li>1</li> <li>2</li> <li>3</li> </ul> </div>

Examples: Make a video player hide the mouse after 5 seconds when idle and fullscreen

.menu-container {
  background: red;
  display: flex;
  align-items: flex-end;
}

ul {
  list-style: none;
  padding: 0px;
  margin: 0px;
}

ul li {
  float: left;
}

Chat Room AFK (45 Seconds) (assuming you have a chat box and a send message function):

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;
};