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