Вопрос

Я могу найти положение курсора.Но мне нужно выяснить, работает ли мышь стабильно.Если мышь не двигалась более 1 минуты, то мы должны предупредить пользователя.

Как это возможно, существуют ли какие-то специальные мероприятия для этого?(Только для IE в javascript)

Это было полезно?

Решение

Установите тайм-аут, когда мышь будет перемещена на одну минуту в будущем, и, если мышь будет перемещена, сбросьте тайм-аут:

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
И дополнительную информацию о событиях catchin мыши здесь http: //www.quirksmode .org / JS / events_mouse.html

Да, у вас есть событие onmousemove в Javascript, поэтому для достижения того, что вам нужно, вам просто нужно сделать что-то вроде этого:

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(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 });
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top