2012-06-07 16 views
13

Nadal nie mogę uwierzyć, że nie jest to możliwe, ale czy istnieje sposób na przechodzenie przez dom i zobaczenie wszystkich procedur obsługi zdarzeń dołączonych przy użyciu "addEventListener". This post i wielu innych mówi nie.Jak znaleźć detektory zdarzeń w węźle DOM przy użyciu JavaScriptu

Jeśli tak, to w jaki sposób aplikacje takie jak inspektor Chrome lub Firebug pokazują, co robią? Sądzę, że prawdopodobnie w jakiś sposób zwiększają metody domingu, dzięki czemu mogą śledzić to, co jest związane.

+0

Gdzie są wyświetlane detektory zdarzeń w przeglądarce Chrome lub Firebug? –

+0

Tak, chciałbym wiedzieć, gdzie też je widzisz! Pobrałem wtyczki do Firebug, które je pokazują, ale prawdopodobnie masz rację, że w jakiś sposób śledzą jakiekolwiek detektory zdarzeń, gdy są powiązane. – Ian

+1

W przeglądarce Chrome kliknij kartę "elementy" u góry. jest to najdalszy z lewej. Wybierz element w domenie, a następnie po prawej stronie znajduje się lista informacji o wybranym elemencie, takim jak Style, Właściwości itp. Ostatnim na liście jest Detektor zdarzeń, który dostarcza wszystkich potrzebnych informacji. Ale możesz zobaczyć tylko informacje o każdym wybranym elemencie, a nie o całym DOM. Hense me zadaje pytanie :) – screenm0nkey

Odpowiedz

25

Konsola Chrome ma metody, które mogą pomóc sprawdzić, czy węzeł dom zawiera jakiekolwiek detektory zdarzeń zarejestrowanych na przykład sprawdzić detektory zdarzeń dołączonych do stosowanie węzeł dokumentu:

https://developers.google.com/chrome-developer-tools/docs/commandline-api#geteventlistenersobject

getEventListeners(document); 

można rekurencyjnie iteracji przez wszystkie węzły DOM i znaleźć wszystkie programy obsługi zdarzeń załączone Jeśli potrzebne.

+2

getEventListeners (myDomElement) działa w konsoli narzędzi deweloperów Chromium v.25, ale w rzeczywistym kodzie generuje błąd. –

+0

@Robinlikethebird tak, 'getEventListeners' jest metodą, którą zapewnia chrome devtools console, szukam metody, która może znaleźć zdarzenia związane z domem w czasie wykonywania. na razie po prostu znajduję metodę jquery '$ .data (element, 'events')'. Szukam zwykłego javascript lub DOM. – novaline

0

Na konsoli V53 Chrome Próbowałem:

getEventListeners (dokument);

która zwraca:

__proto__: Przedmiot

i podrzędne elementy, nie to, czego szukam.

Więc próbowałem:

getEventListeners (okno);

która zwraca

object {beforeunload: Array [1], obciążenie: Array [1]}

To właśnie szukam. Więc myślę, że prawidłowe podejście jest Robin podobny sposób ptaka:

getEventListeners (myDomElement):

gdzie myDomElement jest ukierunkowane obiekt dostał za pomocą standardowych sposobów, takich jak getElementById etc ..

0

użyć następującą funkcję do pobrania json z zarejestrowanych zdarzeń;

getEventListeners (nazwa_węzła); gdzie nazwa_węzła może być nazwą elementu lub jego identyfikatorem.

Powiązane problemy