Я читал о проблемах где mousemove
событие запущено дважды в Safari/Webkit, но проблема, с которой я сталкиваюсь, является этим mousemove
огни, даже когда мышь не перемещена. Это: это уже стреляет, когда курсор мыши расположен выше контекста, к которому присоединено событие, когда страница загружается/обновляется. И потому что я присоединяю его к document
(вся область просмотра браузера), это стреляет сразу же в Safari. Я попытался присоединить его к html
элемент, к body
и к обертке div
. Никакое изменение.
$(document).bind('mousemove', function() {
alert('Mouse moved!');
$(document).unbind('mousemove');
});
Действительно работает хорошо в других браузерах. Кто-либо видящий, что я делаю неправильно?Спасибо.
Я знаю, что это грязный прием, но, по крайней мере, это кое-что: просто выполните функцию обратного вызова при втором запуске 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 тоже это делает. В любом случае, люди, использующие другие браузеры, не заметят «задержки», поскольку практически невозможно переместить курсор мыши только на один пиксель.