Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zdarzenia nie działają kiedy przewijam stronę, events not working after onScroll
veratrion
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.12.2011

Ostrzeżenie: (0%)
-----


Hej

Każdy <li> w liście <ul> ma dodane zdarzenie onmouseover. I wszystko gra - kiedy najeżdżam kursorem wykonuje się funkcja (IMG:style_emoticons/default/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.

Ten post edytował veratrion 17.12.2011, 16:45:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Shili
post
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
veratrion
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.12.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Shili
post
Post #4





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


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.

Go to the top of the page
+Quote Post
veratrion
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.12.2011

Ostrzeżenie: (0%)
-----


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! (IMG:style_emoticons/default/tongue.gif)
Musi się to dać obejść
Go to the top of the page
+Quote Post
Niktoś
post
Post #6





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Możesz dodatkowo użyć w CSS hover na element li z tym samym background'em.
http://jsfiddle.net/WZ3CT/3/

Ten post edytował Niktoś 17.12.2011, 16:28:35
Go to the top of the page
+Quote Post
veratrion
post
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.12.2011

Ostrzeżenie: (0%)
-----


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)

Ten post edytował veratrion 17.12.2011, 16:44:24
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 16:55