我能找到光标位置。但我需要找出鼠标是否稳定。如果鼠标移动时间超过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 });
});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top