Как работает запуск движений мыши в Javascript? - PullRequest
8 голосов
/ 11 мая 2011

У меня есть объект, который печатает позиции мыши x и y на каждом перемещении мыши.

Это примерно так:

$('#canvas').mousemove(function(e){
    $('#output').prepend(e.pageX + ',' + e.pageY);
});

Я заметил, что когда вы двигаетесь над объектомочень быстро он печатает только несколько позиций.

Я не совсем недоволен тем, что он делает это (потому что было бы весьма исчерпывающим, если бы он сделал что-то для всех сотен пикселей, которые вы пересекли), ноМне интересно, как это работает.

Ограничено ли событие mousemove определенным количеством триггеров в секунду или как?

(Кстати: это было проверено на Chromium в Ubuntu Linux)

Ответы [ 3 ]

1 голос
/ 11 мая 2011

Вы можете посмотреть на это, поскольку это может зависеть от браузера,

http://javascript.info/tutorial/mouse-events#mousemove-and-mouseover-frequency, но, если вы посмотрите на этот вопрос, есть предложение о том, как получить лучший ответ.

Как установить скорость обновления перемещения мыши?

0 голосов
/ 11 мая 2011

я думаю, что это синхронно. Он не срабатывает для каждого пикселя, в котором вы двигаете мышь, что означает, что события не помещаются в очередь.

Скажите, если у вас есть какой-то код, подобный этому.

$('#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/

...