![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Kolejne trudne pytanie, na które prawdopodobnie nie otrzymam odpowiedzi, ale spróbować zawsze można.
![]() Mianowicie - w jaki sposób dodać zdarzenie przez addEventListener dla danego elementu na początek kolejki zdarzeń, a nie na jej koniec? Piszę UserJS-a i potrzebuję wykonać swoją funkcję zanim fabryczny handler zostanie wykonany, a nie ma sensu reimplementować istniejącej funkcjonalności. Jakieś pomysły? -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Metoda addEventListener nie wspiera takiego rozwiązania. Opcją jest np podpięcie zdarzenia do elementu rodzica
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Przepisać to do tempowego elementu, dodać swój i dopisać to z temp'a?
Możesz sprawdzać co już jest podpięte korzystając z eventListenerList i usuwać przez removeEventListener() -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
~vokiel - http://stackoverflow.com/questions/2424737...-implementation - więc trzeba zapomnieć.
![]() Huh, zapomniałem, że użyłeś capture; zobaczymy, jak w praniu wyjdzie. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Jak testowałem to działało. Niestety jak się domyślasz nie zadziała to w każdym typie zdarzeń albo obiektach które nie mają rodzica.
Ten post edytował wookieb 23.08.2010, 22:46:16 -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Dla jakiej przeglądarki piszesz tego UserJS? Opera udostępnia kilka narzędzi pozwalających zrobić trochę magii w JS-cie strony, GreaseMonkey o ile dobrze kojarzę też.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
No właśnie pod Operę to piszę, tylko do jakiej konkretnie funkcji pijesz? magicFunction/magicVariable mi nie pomoże. [;
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
...Piszę UserJS-a i potrzebuję wykonać swoją funkcję zanim fabryczny handler zostanie wykonany, a nie ma sensu reimplementować istniejącej funkcjonalności. Jakieś pomysły? No właśnie pod Operę to piszę... Jedno z rozwiązań podał vokiel... ale co masz na myśli przez sformułowanie "fabryczny handler" - czy masz na myśli podpięte zdarzenie przez skrypt znajdujący się na stronie?? W operze o tyle jest wygodnie, że można załączać userscript'y na 2 sposoby - z podwójnym rozszerzeniem jak w Greasemonkey [skrypt wykonuje się po załadowaniu dokumentu - nie pamiętam kture ze zdarzeń wtedy zachodzi] lub z samym rozszerzeniem *.js - i tutaj już pasuje wykrywać zdarzenia typu "DOMContentLoaded"... skrypty urzytkownika w przypadku *.js są wcześniej w oknie więc jest spora szansa podpiąć pierwszemu swoje zdarzenia [podpinając na starcie wykrycie zdarzenia załadowanego dokumentu po czym podpięcie swojego zdarzenia w pierwszej kolejności...] - no jeszcze można trafić na szybsze wywołanie funkcji w dokumencie już po załadowaniu dokumentu - gdy funkcja startująca jest za zamykającym tagiem </html>...[edit] lub jeszcze skoro skrypty *.js są zanim dokument się załaduje, to można sprawdzić, czy gdy document się ładuje, czy jest inicjowane zdarzenie typu DOMNodeInserted lub DOMNodeInsertedIntoDocument i jeśli tak to po każdym takim zdarzeniu sprawdzić, czy jest już wymagany element w dokumencie... Ten post edytował zegarek84 24.08.2010, 10:28:54 -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Jedno z rozwiązań podał vokiel... ale co masz na myśli przez sformułowanie "fabryczny handler" A czytałeś linka, który zamieściłem wcześniej? Cytat ale co masz na myśli przez sformułowanie "fabryczny handler" - czy masz na myśli podpięte zdarzenie przez skrypt znajdujący się na stronie?? Yup. Cytat lub jeszcze skoro skrypty *.js są zanim dokument się załaduje, to można sprawdzić, czy gdy document się ładuje, czy jest inicjowane zdarzenie typu DOMNodeInserted lub DOMNodeInsertedIntoDocument i jeśli tak to po każdym takim zdarzeniu sprawdzić, czy jest już wymagany element w dokumencie... Huh, pod tym kątem nie pomyślałem. Tylko że nie DOMNodeInserted, tylko trzeba będzie dopiąć przez beforeScript. ![]() Dzięki, oświeciłeś mnie. ![]() ps. pomógły polecą, jak sprawdzę w działaniu. Przetestuję oba rozwiązania. ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
A czytałeś linka, który zamieściłem wcześniej? mam problemy z netem [radiówka i kiepska pogoda - ale już zerknąłem ^^]co przez google mi się przewinęło [przy tym necie na strony nie wchodziłem] to jest to na 99% zaimplementowane do greasemonkey - ale zapomnijmy o tym... Huh, pod tym kątem nie pomyślałem. Tylko że nie DOMNodeInserted, tylko trzeba będzie dopiąć przez beforeScript. ![]() Dzięki, oświeciłeś mnie. ![]() dawno nie grałem więc dawno dla siebie i znajomych nie pisałem automatów... i tego beforeScript chyba wcześniej też nie było - z ciekawości luknąłem na stronę opery i mnie rozwaliło - SKORO ZNASZ TO ZDARZENIE TO POWINIENEŚ ZNAĆ BANALNIEJSZĄ METODĘ ;D szkoda się rozpisywać i przede wszystkim przeczytaj całą stronę tam: User JavaScript - Examples of use od Loading scripts [czyli to o czym teraz napisałeś] w dół... w operze w userscript masz takie metody jak: BeforeEvent.type BeforeEventListener.type i nie interesujące Cię AfterEvent.type ;D po problemie ![]() -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat luknąłem na stronę opery i mnie rozwaliło - SKORO ZNASZ TO ZDARZENIE TO POWINIENEŚ ZNAĆ BANALNIEJSZĄ METODĘ ;D No tak, ale lepiej było też poznać metodę opartą na czystym JS, a nie wyłącznie na API do UserJS. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.06.2025 - 11:45 |