Обнаружение того, когда мышь не движется
-
03-07-2019 - |
Вопрос
Я могу найти положение курсора.Но мне нужно выяснить, работает ли мышь стабильно.Если мышь не двигалась более 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 });
});