Я пытаюсь найти чистый способ агрегирования событий mousemove, чтобы гарантировать, что мой код будет вызван, но только раз в 250-300 миллисекунд.
Я думал об использовании чего-то вроде следующего, но мне было интересно, есть ли лучший шаблон или что-то, что предоставляет jQuery, который сделает то же самое:
var mousemove_timeout = null;
$('body').mousemove(function() {
if (mousemove_timeout == null) {
mousemove_timeout = window.setTimeout(myFunction, 250);
}
});
function myFunction() {
/*
* Run my code...
*/
mousemove_timeout = null;
}
EDIT: Принятый ниже ответ идеально подходит для этой ситуации, однако я обнаружил, что функциональность mousestop ()
, представленная в ответе, фактически устранила мою потребность в агрегировании, поэтому, если вы читаете этот вопрос и ищите ответ, посмотрите, действительно ли плагин mousestop вам нужен!