Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   проблема с mouseover (https://javascript.ru/forum/css-html-internet-explorer/22074-problema-s-mouseover.html)

Роман Валерьевич 05.10.2011 12:31

проблема с mouseover
 
Есть два <div>. Оба абсолютно позиционированы. Один вложен в другой и по размерам меньше (внутренний меньше внешнего). Обработчик mouseover привзян к внешнему div'у. Таким образом, при наведении курсора на внешний или внутренний див возникает событие mouseover внешнего div'а. При уходе курсора за границы внешнего div генерируется событие onmouseout внешнего div.
Работает везде, кроме IE (в моем случае версия 7). В IE как только курсор заходит на внутренний div, генерируется onmouseout Для внешнего div.

Как это обойти?

Snipe 05.10.2011 12:54

http://javascript.ru/tutorial/events...vaniya-sobytiy

Роман Валерьевич 05.10.2011 14:01

Спасибо за ссылку! Очень полезный материал!
Однако у меня проблема не в последовательности обработки событий, а в том что в IE при переходе курсора на внутренний дочерний элемент с внешнего срабатывает обработчик onmouseout этого внешнего элемента, а мне это не нужно.

Роман Валерьевич 05.10.2011 14:58

Опытным путем выяснил что mouseout при переходе с родительского на дочерний элемент все-таки не возникает. Почему происходит на долю секунды вызов обработчика mouseout с последующим возвратом к предыдущему состоянию не выяснил. Эта проблема только в 7 IE, в 9 все ок. В 8 не пробовал. Видимо просто глюк.

dmitriymar 05.10.2011 15:25

отслеживать с какого элемента был переход и куда. fromElement, toElement- для ие ,relatedTarget -для всех остальных

Роман Валерьевич 05.10.2011 16:41

Спасибо! Пришлось поковыряться во всем этом, но зато разобрался и теперь все работает даже в IE7. Вложенный див был пустой, но растягивался прозрачным PNG, задал ему id и в обработчике mouseout сравнивал toElement с этим id.

Зато теперь другая забавная ошибка. если быстро мышкой "дёргнуть" с родительского дива вниз, возникает ошибка:
Uncaught exception: TypeError: Cannot convert 'sourceTo' to object :)
Неужели не успевает схватить какой-нибудь объект из части страницы??
Экранирую эту ерунду проверкой sourceTo и вес работает.

Роман Валерьевич 05.10.2011 16:43

Upd
В sourceTo записывал toElement(relatedTarget)

daria 05.10.2011 18:11

Может быть, вам поможет использование пары mouseleave\mouseenter вместо mouseout\mouseover?

Если я правильно поняла проблему, это должно помочь. Сделала маленький пример, попробуйте: http://jsfiddle.net/UdvXc/

dmitriymar 05.10.2011 20:31

Цитата:

Сообщение от Snipe
http://javascript.ru/tutorial/events...vaniya-sobytiy

вам ещё раз стоит просмотреть код с учётом сказанного выше
Цитата:

Сообщение от daria
Может быть, вам поможет использование пары mouseleave\mouseenter вместо mouseout\mouseover?

это только в ие работает

daria 05.10.2011 22:24

Хм... Проверила на всякий случай ещё раз в Chrome и FF7. Вроде работает.


Часовой пояс GMT +3, время: 05:29.