Jak dowiedzieć się, które zdarzenia JavaScript są uruchamiane?
Mam listę wyboru:
<select id="filter">
<option value="Open" selected="selected">Open</option>
<option value="Closed">Closed</option>
</select>
Po wybraniu Closed
Strona się przeładowuje. W tym przypadku pokazuje zamknięte bilety(zamiast otwartych). Działa dobrze, gdy robię to ręcznie.
Problem polega na tym, że strona nie przeładowuje się po wybraniu Closed
z Watir :
browser.select_list(:id => "filter").select "Closed"
To zwykle oznacza, że niektóre zdarzenia JavaScript nie są wywoływane. Mogę odpalić zdarzenia z Watir:
browser.select_list(:id => "filter").fire_event "onclick"
Ale muszę wiedzieć, które wydarzenie wystrzelić.
Czy jest sposób, aby dowiedzieć się, które wydarzenia są zdefiniowane dla elementu?
3 answers
Pomyślałem, że dodam, że można to zrobić również w Chrome:
Ctrl + Shift + I (Narzędzia programistyczne) > Źródła > punkty przerwania detektora zdarzeń (po prawej).
Możesz również wyświetlić wszystkie zdarzenia, które zostały już dołączone, klikając prawym przyciskiem myszy na elemencie, a następnie przeglądając jego właściwości (panel po prawej stronie).
Na przykład:
Nie wiem, czy jest tak potężny, jak opcja firebug, ale wystarczył na większość moich rzeczy.
Inną opcją, która jest nieco inna, ale zaskakująco niesamowita, jest Event wizualny: http://www.sprymedia.co.uk/article/Visual + Wydarzenie+2
Podkreśla wszystkie elementy na stronie, które zostały powiązane i mają wyskakujące okienka pokazujące wywołane funkcje. Całkiem niezła jak na zakładkę! Jest też wtyczka Chrome, jeśli to bardziej Twoja sprawa - nie jestem pewien innych przeglądarek.
AnonymousAndrew wskazał również monitorEvents(window);
tutaj
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:24
Wygląda na to, że Firebug (dodatek do Firefoksa) ma ODPOWIEDŹ:
- open Firebug
- Kliknij prawym przyciskiem myszy element w zakładce HTML
- Kliknij
Log Events
- włącz kartę konsoli
- Kliknij Persist na karcie Konsola (w przeciwnym razie karta konsoli zostanie wyczyszczona po ponownym załadowaniu strony)
- select
Closed
(ręcznie) -
Będzie coś takiego w zakładce konsola:
... mousemove clientX=1097, clientY=292 popupshowing mousedown clientX=1097, clientY=292 focus mouseup clientX=1097, clientY=292 click clientX=1097, clientY=292 mousemove clientX=1096, clientY=293 ...
Source: Firebug Tip: Log Events
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-24 13:44:58
Jeśli chodzi o Chrome, sprawdź monitorEvents () za pomocą interfejsu API wiersza poleceń.
- otwórz konsolę za pomocą Menu > Narzędzia > konsola JavaScript.
- Enter
monitorEvents(window);
-
Wyświetlanie konsoli zalanej zdarzeniami
... mousemove MouseEvent {dataTransfer: ...} mouseout MouseEvent {dataTransfer: ...} mouseover MouseEvent {dataTransfer: ...} change Event {clipboardData: ...} ...
Istnieją inne przykłady w dokumentacji . Domyślam się, że ta funkcja została dodana po poprzedniej odpowiedzi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-05 16:18:08