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ł?
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.
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.
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