jquery / IE mousemove событие срабатывает, когда всплывающая подсказка исчезает, но мышь не движется - PullRequest
1 голос
/ 10 июня 2011

Я пытаюсь заставить всплывающую подсказку работать, чтобы она исчезала после того, как она показана. Мой код работает отлично, за исключением IE8 - событие mousemove (над изображением) продолжает срабатывать, когда всплывающая подсказка исчезает, и это создает пульсирующий эффект ... исчезновение / исчезновение / появление / удаление.

Проблема связана с подсказкой, потому что, если я избавлюсь от кода подсказки, событие mousemove вызывается только при перемещении мыши.

Вы можете увидеть упрощенный пример здесь:

нажмите, чтобы увидеть упрощенный пример (используйте IE8)

Ответы [ 2 ]

2 голосов
/ 25 июля 2011

Да, моя идея для исправления, кажется, работает:

ElementLooper.prototype = {
init: function(items, control, outer){
...
var self = this;
...
this.px = null;
this.py = null;
...
outer.mousemove(function(e) {
                  if (self.px == e.pageX && self.py == e.pageY) {
                    return;
                  }
                  self.px = e.pageX;  self.py = e.pageY;
                  self.show_control();
                });
1 голос
/ 24 июля 2011

Да, я могу воспроизвести это в IE7 и IE8, jquery-1.6.2

Я написал слайд-шоу изображений, которое использует fadeIn () / fadeOut () для переключения между изображениями.Если курсор мыши находится над слайд-шоу, при включении изображения появляется всплывающая подсказка img title = "...". Когда всплывающая подсказка исчезает (браузер ее затухает через несколько секунд), вызывается обработчик mousemove ().

См. Титульную страницу http://davidhoulder.com для примера, который в настоящее время (24 июля 2011 г.) вызывает эту ошибку в IE7 / 8.Если мне удастся исправить или обойти это, я обновлю этот ответ.

Одним из возможных исправлений является сохранение .pageX и .pageY в обработчике .mousemove () и просто возврат, если мышь действительно не перемещалась.

...