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.
Po prostu zaznaczone - IE 7 nie uruchamia 'mouseover' lub' mouseout' gdy mysz jest nieruchoma. – jball
+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
Fajne dzięki, właśnie rozpaliłem VirtualBox, aby przetestować – Zevan