У меня есть объект, который печатает позиции мыши x и y при каждом движении мыши.
Это что-то вроде этого:
$('#canvas').mousemove(function(e){
$('#output').prepend(e.pageX + ',' + e.pageY);
});
Я заметил, что когда вы очень быстро перемещаетесь по объекту, он печатает только несколько позиций.
Я не совсем недоволен тем, что он это делает (потому что было бы довольно утомительно, если бы он что-то делал для всех сотен пикселей, которые вы пересекли), но мне интересно, как это работает.
Событие mousemove ограничено определенным количеством триггеров в секунду или что?
(Кстати: это было протестировано на Chromium в Ubuntu Linux)
Ответ 3 · Jishnu A P
Я думаю, что это синхронно. Он не срабатывает для каждого пикселя, в котором вы перемещаете мышь, что означает, что события не ставятся в очередь.
Скажите, есть ли у вас такой код.
$('#canvas').mousemove(function(e){
//Some code which takes seconds to execute
//All subsequent events won't be dispatched while this event handler is executing.
});
Скажем, если вы переместите мышь во время выполнения обработчиков событий перемещения мыши. Обработчик mousemove не будет запущен.
Вот пример обработчика, выполнение которого займет несколько секунд. --> http://jsfiddle.net/78Hf3/1/
И тот, который занимает совсем немного времени --> http://jsfiddle.net/78Hf3/2/