Обнаружение, когда мышь не движется

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

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

Ответы

Ответ 1

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

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

Ответ 2

Нет ли способа установить таймер для начала инкремента после каждого события перемещения мыши?

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

Ответ 3

Используйте таймер, который сбрасывает свое значение в событии mousemove. Если таймер достигает 1 минуты → Сделайте что-нибудь.

Дополнительная информация о таймере здесь http://www.w3schools.com/js/js_timing.asp
И больше информации о событиях catchin mouse здесь http://www.quirksmode.org/js/events_mouse.html

Ответ 4

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

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

Вы можете использовать его в теге body документа, например.

UPDATE: @Marius показал лучший пример, чем этот.

Ответ 5

Вы можете использовать событие onmousemove. Внутри него clearTimeout() и setTimeout (your_warning, 1 минута).

Ответ 6

Вы можете использовать этот script/snippet, чтобы обнаружить положение указателя мыши и "запомнить" его. Затем используйте таймер "setTimeout (...)", чтобы проверить позицию, пусть говорят каждую секунду, и помните это время.

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

Ответ 7

Здесь одна-и-проделанная функция, которая может проверять любой элемент перемещения:

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