Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top