WebKit и Safari запускают mousemove, даже когда мышь не перемещается

Я читал о проблемах где mousemove событие запущено дважды в Safari/Webkit, но проблема, с которой я сталкиваюсь, является этим mousemove огни, даже когда мышь не перемещена. Это: это уже стреляет, когда курсор мыши расположен выше контекста, к которому присоединено событие, когда страница загружается/обновляется. И потому что я присоединяю его к document (вся область просмотра браузера), это стреляет сразу же в Safari. Я попытался присоединить его к html элемент, к body и к обертке div. Никакое изменение.

$(document).bind('mousemove', function() {
  alert('Mouse moved!');
  $(document).unbind('mousemove');
});

Действительно работает хорошо в других браузерах. Кто-либо видящий, что я делаю неправильно?Спасибо.

6
задан Mathias Bynens 22 April 2010 в 09:22
поделиться

1 ответ

Я знаю, что это грязный прием, но, по крайней мере, это кое-что: просто выполните функцию обратного вызова при втором запуске mousemove .

var $document = $(document), i = 0;
$document.bind('mousemove', function() {
 if (++i > 1) {
  alert('Mouse moved!');
  $document.unbind('mousemove');
 };
});

Демо: http://fiddle.jshell.net/Yz5Bd/show/light/

Как бы то ни было, Safari - не единственный браузер, запускающий mousemove при загрузке страницы - IE тоже это делает. В любом случае, люди, использующие другие браузеры, не заметят «задержки», поскольку практически невозможно переместить курсор мыши только на один пиксель.

1
ответ дан 17 December 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: