Вы можете использовать обработчик mousemove
для отслеживания того, когда пользователь последний раз перемещался, и тогда процесс будет происходить только в том случае, если он последний раз перемещал мышь в течение X секунд. Но, конечно, если пользователь сидит там и читает что-то, или если он человек, ориентированный на клавиатуру, он будет скучать по тому, что он там ... Поэтому вы, вероятно, захотите взглянуть на keydown
а также.
Вот пример перемещения мыши :
jQuery(function($) {
var count = 0, lastmove = new Date();
$(document).mousemove(function() {
++count;
lastmove = new Date();
$('#display').html("Moved " + count + " times");
});
});
Тогда ваш код обновления может сделать это:
function update() {
if (new Date() - lastmove < 60000) { // 60 seconds
// Really do the update
}
else {
// Check back in a few seconds
setTimeout(update, 3000);
}
}
Не по теме , но у вас есть ошибка в вашем коде обновления. У вас есть:
setTimeout(update(), 3000);
... который немедленно вызовет update
и затем попытается использовать его возвращаемое значение, чтобы запланировать что-то, что произойдет через три секунды. Если вы хотите, чтобы звонок на update
планировался через три секунды, отмените ()
после него:
setTimeout(update, 3000);