Pergunta

Eu sou capaz de encontrar a posição do cursor. Mas eu preciso saber se o mouse é estável. Se o rato não foi movido por mais de 1 minuto, então nós temos que alertar o usuário.

Como é possível, existem eventos especiais para isso? (Apenas para o IE em javascript)

Foi útil?

Solução

Defina um tempo limite quando o mouse é movido um minuto para o futuro, e se o mouse é movido, desmarque a timeout:

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

Outras dicas

Não há uma maneira de definir um temporizador para começar a incrementar depois de cada evento o movimento do mouse?

Caso se chegue a um minuto, em seguida, pop-up caixa de mensagem, mas cada vez que o mouse move o temporizador fica zerado.

Use um temporizador que redefine o seu valor no evento MouseMove. Se o temporizador chegar a 1 minuto -.> Do algo

Mais informações em temporizador aqui http: //www.w3schools .com / js / js_timing.asp
E mais informações sobre eventos catchin do rato aqui http: //www.quirksmode .org / js / events_mouse.html

Sim, você tem um evento onmousemove em Javascript, assim que para conseguir o que você precisa, você apenas tem que fazer o código algo como isto:

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

Você pode usá-lo na tag corpo do documento, por exemplo.

UPDATE:. @Marius atingiu um exemplo melhor do que este

Você pode usar o evento onmousemove. Dentro dele, clearTimeout () e setTimeout (your_warning, 1 minuto).

Você pode usar este script / trecho para detectar a posição do ponteiro do mouse e "lembrar" dele. Em seguida, use um temporizador "setTimeout (...)" para verificar a posição digamos a cada segundo e lembre-se que o tempo.

Se mais de um minuto se passou e a posição não mudou, você pode alertar o usuário.

Aqui está um um-e-feito função que pode verificar qualquer elemento para o movimento:

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

Uso: mouse(element, delay, callback)

Exemplos: Faça um player de vídeo esconder o rato depois de 5 segundos quando ocioso e fullscreen

let x = mouse(video, 5000, function (a) {
   if (document.webkitIsFullScreen) video.style.cursor = "none";
});

x.toggle(1); addEventListener("mousemove", function () {
   video.style.cursor = "auto";
});

Chat Room AFK (45 Segundos) (supondo que você tenha uma caixa de bate-papo e uma função de enviar mensagem):

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 });
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top