Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.10.2011, 12:31
Интересующийся
Отправить личное сообщение для Роман Валерьевич Посмотреть профиль Найти все сообщения от Роман Валерьевич
 
Регистрация: 19.09.2011
Сообщений: 23

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

Как это обойти?
Ответить с цитированием
  #2 (permalink)  
Старый 05.10.2011, 12:54
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

http://javascript.ru/tutorial/events...vaniya-sobytiy
Ответить с цитированием
  #3 (permalink)  
Старый 05.10.2011, 14:01
Интересующийся
Отправить личное сообщение для Роман Валерьевич Посмотреть профиль Найти все сообщения от Роман Валерьевич
 
Регистрация: 19.09.2011
Сообщений: 23

Спасибо за ссылку! Очень полезный материал!
Однако у меня проблема не в последовательности обработки событий, а в том что в IE при переходе курсора на внутренний дочерний элемент с внешнего срабатывает обработчик onmouseout этого внешнего элемента, а мне это не нужно.
Ответить с цитированием
  #4 (permalink)  
Старый 05.10.2011, 14:58
Интересующийся
Отправить личное сообщение для Роман Валерьевич Посмотреть профиль Найти все сообщения от Роман Валерьевич
 
Регистрация: 19.09.2011
Сообщений: 23

Опытным путем выяснил что mouseout при переходе с родительского на дочерний элемент все-таки не возникает. Почему происходит на долю секунды вызов обработчика mouseout с последующим возвратом к предыдущему состоянию не выяснил. Эта проблема только в 7 IE, в 9 все ок. В 8 не пробовал. Видимо просто глюк.
Ответить с цитированием
  #5 (permalink)  
Старый 05.10.2011, 15:25
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

отслеживать с какого элемента был переход и куда. fromElement, toElement- для ие ,relatedTarget -для всех остальных
Ответить с цитированием
  #6 (permalink)  
Старый 05.10.2011, 16:41
Интересующийся
Отправить личное сообщение для Роман Валерьевич Посмотреть профиль Найти все сообщения от Роман Валерьевич
 
Регистрация: 19.09.2011
Сообщений: 23

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

Зато теперь другая забавная ошибка. если быстро мышкой "дёргнуть" с родительского дива вниз, возникает ошибка:
Uncaught exception: TypeError: Cannot convert 'sourceTo' to object
Неужели не успевает схватить какой-нибудь объект из части страницы??
Экранирую эту ерунду проверкой sourceTo и вес работает.
Ответить с цитированием
  #7 (permalink)  
Старый 05.10.2011, 16:43
Интересующийся
Отправить личное сообщение для Роман Валерьевич Посмотреть профиль Найти все сообщения от Роман Валерьевич
 
Регистрация: 19.09.2011
Сообщений: 23

Upd
В sourceTo записывал toElement(relatedTarget)
Ответить с цитированием
  #8 (permalink)  
Старый 05.10.2011, 18:11
Новичок на форуме
Отправить личное сообщение для daria Посмотреть профиль Найти все сообщения от daria
 
Регистрация: 09.07.2011
Сообщений: 2

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

Если я правильно поняла проблему, это должно помочь. Сделала маленький пример, попробуйте: http://jsfiddle.net/UdvXc/
Ответить с цитированием
  #9 (permalink)  
Старый 05.10.2011, 20:31
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Snipe
http://javascript.ru/tutorial/events...vaniya-sobytiy
вам ещё раз стоит просмотреть код с учётом сказанного выше
Сообщение от daria
Может быть, вам поможет использование пары mouseleave\mouseenter вместо mouseout\mouseover?
это только в ие работает
Ответить с цитированием
  #10 (permalink)  
Старый 05.10.2011, 22:24
Новичок на форуме
Отправить личное сообщение для daria Посмотреть профиль Найти все сообщения от daria
 
Регистрация: 09.07.2011
Сообщений: 2

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mouseover, mouseout - не распространяется на дочерние элементы barmaley Events/DOM/Window 31 01.06.2017 08:52
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Проблема с CSS COKOJIOB (X)HTML/CSS 5 04.08.2009 14:19
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47