WebKit и Safari Fire MouseMove, даже когда мышь не двигается
-
25-09-2019 - |
Вопрос
Я прочитал о проблемах, где 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
На странице нагрузки - то есть это тоже. Во всяком случае люди, использующие другие браузеры, не замечают «задержку», поскольку это практически невозможно переместить мышь только один пиксель.