#jquery #internet-explorer-8 #tooltip #fadeout #mousemove
#jquery #internet-explorer-8 #всплывающая подсказка #исчезновение #перемещение мыши
Вопрос:
Я пытаюсь заставить всплывающую подсказку работать так, чтобы она исчезала после ее отображения. Мой код отлично работает, за исключением IE8 — событие mousemove (над изображением) продолжает запускаться при исчезновении всплывающей подсказки, и это создает пульсирующий эффект … постепенное включение / выключение.
Проблема как-то связана со всплывающей подсказкой, потому что, если я избавлюсь от кода всплывающей подсказки, событие перемещения мыши вызывается только при перемещении мыши.
Упрощенный пример можно увидеть здесь:
Комментарии:
1. Кто-нибудь еще может воспроизвести это? Кажется, я не могу перевести это в proc.
2. Нет. Не удалось повторить это в ie9 (режим ie8). Сработало, как ожидалось
3. Вы используете jQuery 1.5.2 — попробуйте обновить до 1.6.2, поскольку это вполне могло быть исправлено в исходном коде.
4. Ради гуглера: по какой-то причине я также получаю эти ложные события перемещения мыши в IE при анимации непрозрачности div с помощью jquery, полностью отдельно от мыши, которая находится над совершенно другим div. Сохранение координат мыши, чтобы увидеть, действительно ли она перемещена, как показано ниже, сделало свое дело.
Ответ №1:
Да, моя идея по исправлению, похоже, работает:
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 amp;amp; self.py == e.pageY) {
return;
}
self.px = e.pageX; self.py = e.pageY;
self.show_control();
});
Комментарии:
1. Я вижу… итак, вы сохраняете текущее положение мыши в событии перемещения мыши как глобальные значения, а затем проверяете, изменилось ли положение, прежде чем что-либо делать? Интересно. Интересно, известна ли эта ошибка и нужно ли сообщать о ней.
Ответ №2:
Да, я могу воспроизвести это в IE7 и IE8, jquery-1.6.2
Я написал слайд-шоу с изображениями, которое использует fadeIn () / fadeOut () для переключения между изображениями. Если курсор мыши находится над слайд-шоу, всплывающая подсказка img title =»…» появляется при переключении изображения. Когда всплывающая подсказка исчезает (браузер удаляет ее через несколько секунд), вызывается обработчик mousemove().
Смотрите первую страницу http://davidhoulder.com для примера, который в настоящее время (24 июля 2011) вызывает эту ошибку в IE7 / 8. Если мне удастся исправить или обойти это, я обновлю этот ответ.
Одно из возможных исправлений — сохранить .pageX и .pageY в обработчике .mousemove () и просто вернуть, если мышь действительно не перемещалась.