Detectar quando o mouse não está se movendo
-
03-07-2019 - |
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)
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 });
});