Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zdarzenia nie działają kiedy przewijam stronę
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
veratrion
Hej

Każdy <li> w liście <ul> ma dodane zdarzenie onmouseover. I wszystko gra - kiedy najeżdżam kursorem wykonuje się funkcja wink.gif

Problem w tym, że kiedy przewijam stronę scrollem (nie poruszając kursorem) i kursor jest wtedy nad elementem <li> to zdarzenie onMouseOver się nie wywołuje.

Próbowałem dodać do body zdarzenie onScroll i wtedy wywołać zdarzenie onMouseOver ręcznie. Ale tu pojawia się nowy problem - jak pobrać element pod kursorem?


Tutaj macie przykład.
Shili
Jaka przeglądarka (i jej wersja) się tak zachowuje?

Sprawdziłam przykład na IE9, Chrome i Firefoksie (pomijając Operę na trzech głównych silnikach renderowania) i:

1) Chrome i Firefoks działają tak, że po najechaniu za pomocą scrolla element podświetla się na czerwono
2) IE9 działa z opóźnieniem - element podświetla się na czerwono jeśli jeszcze raz użyjemy scrolla (jest opóźniony)

Natomiast jeśli finalnie chcesz zmienić tylko style po najechaniu, to nie tędy droga, co prawda nie wpływa to na zachowanie IE9, które nadal działa z opóźnieniem.
veratrion
Heh może poruszasz myszą przy scrollowaniu. Spróbuj samymi strzałkami klawiatury przewijać stronę.

Sprawdzałem to na:
chrome 16.0.9
opera 11.6
IE 8
FF 8.0.1 - Tylko tu działa dobrze

Podświetlenie elementu jest tylko przykładem dowolnej instrukcji.
Shili
Cóż, taka specyfika przeglądarek.
Przesuwanie strzałkami to nie najeżdżanie myszką. To że kursor przypadkiem trafił widać niekoniecznie zmotywowało wszystkich do zaimplementowania tego typu rozwiąznia.
Tak działają wszystkie strony korzystające ze zdarzeń js.

Tutaj nawet przeglądarki na jednym silniku (webkit) typu Chrome i Safari działają różnie.
Trzeba się niestety z tym pogodzić.

Btw, u mnie na chrome (jeszcze wersja 15) też działa jak powinno, tzn po przesunięciu strzałkami robi się czerwone tło.

veratrion
Cholera, ale tak nie powinno być...

Nie dałoby się ręcznie wymusić wywołanie zdarzeń danego typu, czy coś.
Nie wierzę, że czegoś się nie da zrobić.

Prawdziwy programista się nie poddaje! tongue.gif
Musi się to dać obejść
Niktoś
Możesz dodatkowo użyć w CSS hover na element li z tym samym background'em.
http://jsfiddle.net/WZ3CT/3/
veratrion
To czerwone tło to tylko przykład.
Równie dobrze mógłby się zmieniać napis w <li>.
Poza tym :hover nie zmienia sytuacji bo i tak nie działa ;P (co jest jeszcze dziwniejsze)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.