Eventy na stronie

Witam,
pytanie troszkę nie Ruby/Rails, ale być może ktoś się spotkał z czymś takim korzystając z webrata, htmlunit itp.
Chodzi mi o znalezienie wszystkich elementów na stronie, które mają (z pomocą jakiś bibliotek) zbindowany event “clik” (czyli ujs a nie onClick) i wykonują jakąś akcje.
Normalnym jest, że należało by szukać linków i buttonów, ale ostatnio natrafiliśmy na “przycisk” zrobiony na bazie spana.
Ma ktoś jakiś pomysł?

pozdrawiam

W jQuery można spróbować nadpisując metodę bind() albo click().

A czy to nie chodziło raczej o analizę strony stworzonej przez “siły obce”, bez wcinania się w proces jej tworzenia?

Jeśli tak, to chyba, niestety, DOM nie przewiduje przeglądania handlerów dodanych przez addEventListener. Możesz chyba co najwyżej przelecieć się przez wszystkie węzły w dokumencie i posprawdzać czy onclick ma jakąś wartość.

[quote=Arsen7]A czy to nie chodziło raczej o analizę strony stworzonej przez “siły obce”, bez wcinania się w proces jej tworzenia?

Jeśli tak, to chyba, niestety, DOM nie przewiduje przeglądania handlerów dodanych przez addEventListener. Możesz chyba co najwyżej przelecieć się przez wszystkie węzły w dokumencie i posprawdzać czy onclick ma jakąś wartość.[/quote]
No właśnie o to chodzi. Chcę analizować właśnie czyjąś stronę. Chciałbym uniknąć przechodzenia przez wszystkie elementy, ale może to będzie konieczne.

pozdrawiam i dzięki za odpowiedzi

To znaczy przechodzenie przez wszystkie elementy nie powinno być jakoś szczególnie obciążającym zadaniem dla dzisiejszych maszyn.
Problemem jest raczej to, że niekoniecznie handler będzie wstawiony właśnie w atrybut ‘onclick’, więc metoda nie będzie stuprocentowo skuteczna. Zgaduję, że to będzie raczej coś koło jednocyfrowej wielkości. :frowning:

Ewentualnie można by grzebnąć w kodzie przeglądarki, bo w końcu ona jakoś te handlery gromadzi i potrafi je znaleźć. To tylko DOM nie udostępnia żadnego interfejsu.

Jak właściwie chcesz tę stronę analizować? Wczytujesz ją w iframe?

[quote=Arsen7]To znaczy przechodzenie przez wszystkie elementy nie powinno być jakoś szczególnie obciążającym zadaniem dla dzisiejszych maszyn.
Problemem jest raczej to, że niekoniecznie handler będzie wstawiony właśnie w atrybut ‘onclick’, więc metoda nie będzie stuprocentowo skuteczna. Zgaduję, że to będzie raczej coś koło jednocyfrowej wielkości. :([/quote]
no dokładnie, z onclick nie mam problemów. Chodzi mi o ujs i bindowanie z pomocą np. jQuery
Gdzie to jest trzymane? W przeglądarce? jQuery to gdzieś trzyma? Przydała by się metoda typu: jQuery.getEvents czy coś

[quote=Arsen7]Ewentualnie można by grzebnąć w kodzie przeglądarki, bo w końcu ona jakoś te handlery gromadzi i potrafi je znaleźć. To tylko DOM nie udostępnia żadnego interfejsu.
Jak właściwie chcesz tę stronę analizować? Wczytujesz ją w iframe?[/quote]
Poprzez htmlunit (obsługa js)/webrat lub coś innego… choćby i czysty kod javascript w konsoli firebug :slight_smile:

pozdrawiam

Znam coś takiego: http://www.sprymedia.co.uk/article/Visual%2BEvent - wyświetla eventy przypisane elementom na stronie. Jednorazowe, ale może podrzuci jakiś pomysł.

dzięki, hasło javascript event debuger to było hasło do googla, które potrzebowałem, a które “wymyśliłem” dzięki tobie

link: http://james.padolsey.com/javascript/debug-jquery-events-with-listhandlers/

pozdrawiam