2011-01-26 10 views
10

To dziwne, jestem zszokowany, że nigdy wcześniej tego nie zauważyłem. Działa to tak, jeśli twoja mysz jest nieruchoma, a div programowo porusza się pod myszą, zdarzenie mouseover nie zostanie wywołane w chrome/safari - to samo dotyczy mouseout. Oczywiście, jeśli przesuniesz lekko mysz, gdy element div przemieści się pod myszą, zadziała zgodnie z oczekiwaniami.Problem MouseOver MouseOut w Safari/Chrome

Stworzyłem demo on jsFiddle. Po prostu pozwól divowi oscylować pod twoją myszą, działa dobrze w firefoxie, nie w chromie czy safari - musisz jeszcze przetestować w ie.

Jestem nachylając się ku takiemu rozwiązaniu ... w zasadzie toczenia własne mouseenter i mouseLeave zdarzeń przy użyciu to:

if (mouseX > divLeft && mouseX < divRight && 
    mouseY > divTop && mouseY < divBottom){ 
    // mouse is inside div 
} 

mówię mouseenter i pozostawić ponieważ metoda ta nie miałaby pęcherzyków

Zastanawiałem się, czy ktoś jeszcze o tym myślał ... Mam przeczucie, że jest na to łatwy sposób, ale jak dotąd Google nie podniosło niczego.

+1

Po prostu zaznaczone - IE 7 nie uruchamia 'mouseover' lub' mouseout' gdy mysz jest nieruchoma. – jball

+0

+1, całkiem interesujące. Może być możliwe wywołanie zdarzenia za pomocą javascript przez sprawdzenie położenia myszy w ruchu div. – JCOC611

+0

Fajne dzięki, właśnie rozpaliłem VirtualBox, aby przetestować – Zevan

Odpowiedz

3

https://bugs.webkit.org/show_bug.cgi?id=4117

Można znaleźć ten bug interesujące.

+0

bardzo fajne. Domyślam się, że to tylko błąd ... Pójdę trochę poczekać, aby sprawdzić, czy są jakieś inne rozwiązania, ale jestem pewien, że oznaczy to jako poprawną odpowiedź. – Zevan

+0

Wygląda na to, że nie ma innej możliwości niż ta, o której wspomniałem w swoim oryginalnym pytaniu - po prostu użyłem tego i działa dobrze na to, czego potrzebuję. – Zevan

Powiązane problemy