Czy istnieje sposób, aby zobaczyć, jakie funkcje / kod są dołączone do dowolnego zdarzenia elementu DOM? Korzystanie z Firebuga lub innego narzędzia.
javascript
events
Claudio Redi
źródło
źródło
Odpowiedzi:
Procedury obsługi zdarzeń dołączone przy użyciu tradycyjnego
element.onclick= handler
lub HTML<element onclick="handler">
można pobrać w prosty sposób zelement.onclick
właściwości ze skryptu lub w debugerze.Programy obsługi zdarzeń dołączone przy użyciu metod DOM Level 2 Events
addEventListener
i IEattachEvent
nie mogą być obecnie w ogóle pobierane ze skryptu. DOM Level 3 zaproponowano kiedyś,element.eventListenerList
aby uzyskać dostęp do wszystkich słuchaczy, ale nie jest jasne, czy pozwoli to osiągnąć ostateczną specyfikację. Obecnie nie ma implementacji w żadnej przeglądarce.Narzędzie do debugowania jako rozszerzenie przeglądarki może uzyskać dostęp do tego rodzaju słuchaczy, ale nie wiem, czy w rzeczywistości ma to miejsce.
Niektóre frameworki JS pozostawiają wystarczająco dużo zapisów powiązań zdarzeń, aby dowiedzieć się, co robili. Visual Event wykorzystuje to podejście do wykrywania słuchaczy zarejestrowanych za pomocą kilku popularnych frameworków.
źródło
Elementów płytowych w narzędziach Google Chrome Developer miał to od wydań Chrome w połowie 2011 roku i Chrome wydaniach kanale deweloperskim od 2010 roku.
Ponadto detektory zdarzeń pokazane dla wybranego węzła są w kolejności, w jakiej są uruchamiane w fazie przechwytywania i propagacji.
Naciśnij command+ option+ iw systemie Mac OSX i Ctrl+ Shift+ iw systemie Windows, aby uruchomić to w Chrome
źródło
window
obiekcie, takie jakmessage
zdarzenie?Narzędzia deweloperskie Chrome niedawno ogłosiły wprowadzenie nowych narzędzi do monitorowania zdarzeń JavaScript .
Znajdowanie zdarzeń niestandardowych
Na moją potrzebę, odkrywając niestandardowe zdarzenia JS w kodzie strony trzeciej, poniższe dwie wersje
getEventListeners()
były niezwykle pomocne;getEventListeners(window)
getEventListeners(document)
Jeśli wiesz, do którego węzła DOM został dołączony detektor zdarzeń, przekażesz to zamiast
window
lubdocument
.Znane wydarzenie
Jeśli wiesz, co wydarzenie chcesz monitorować np
click
na ciele dokumentu można użyć następujących:monitorEvents(document.body, 'click');
.Powinieneś teraz zacząć widzieć wszystkie zdarzenia kliknięcia na
document.body
zalogowanym w konsoli.źródło
Możesz przeglądać bezpośrednio dołączone zdarzenia (element.onclick = handler), patrząc na DOM. Możesz przeglądać zdarzenia dołączone do jQuery w Firefoksie za pomocą FireBug z FireQuery. Wygląda na to, że nie ma sposobu, aby zobaczyć zdarzenia dodane przez addEventListener za pomocą FireBug. Możesz je jednak zobaczyć w Chrome za pomocą debugera Chrome.
źródło
Możesz użyć Visual Event autorstwa Allana Jardine'a, aby sprawdzić wszystkie aktualnie dołączone programy obsługi zdarzeń z kilku głównych bibliotek JavaScript na twojej stronie. Działa z jQuery, YUI i kilkoma innymi.
Visual Event to bookmarklet JavaScript, więc jest kompatybilny ze wszystkimi głównymi przeglądarkami.
źródło
Możesz rozszerzyć swoje środowisko javascript, aby śledzić detektory zdarzeń. Otocz (lub „przeciąż”) natywną metodę addEventListener () jakimś kodem, który może przechowywać zapis każdego detektora zdarzeń dodanego od tego momentu . Musiałbyś również rozszerzyć HTMLElement.prototype.removeEventListener, aby przechowywać rekordy, które dokładnie odzwierciedlają to, co dzieje się w DOM.
Dla ilustracji (nieprzetestowany kod) - to jest przykład tego, jak można `` opakować '' addEventListener, aby zapisy zarejestrowanych detektorów zdarzeń znajdowały się na samym obiekcie:
źródło