Spojrzałem już na te pytania:
- Jak znaleźć detektory zdarzeń w węźle DOM podczas debugowania lub z kodu JavaScript?
- czy mogę programowo badać i modyfikować programy obsługi zdarzeń JavaScript w elementach html?
- Jak debugować powiązania zdarzeń JavaScript / jQuery za pomocą Firebug (lub podobnego narzędzia)
jednak żaden z nich nie odpowiada, jak uzyskać listę detektorów zdarzeń dołączonych do węzła za pomocą addEventListener
, bez modyfikowania addEventListener
prototypu przed utworzeniem detektorów zdarzeń.
VisualEvent nie wyświetla wszystkich odbiorników zdarzeń (specyficznych dla iPhone'a ) i chcę to zrobić (nieco) programowo.
javascript
dom-events
Tyilo
źródło
źródło
Odpowiedzi:
Chrome DevTools, Safari Inspector i Firebug obsługują getEventListeners (node) .
źródło
Nie możesz.
Jedynym sposobem uzyskania listy wszystkich detektorów zdarzeń podłączonych do węzła jest przechwycenie wywołania załącznika nasłuchującego.
DOM4 addEventListener
Mówi
Oznacza to, że detektor zdarzeń jest dodawany do „listy detektorów zdarzeń”. To wszystko. Nie ma pojęcia, jaka powinna być ta lista ani jak należy uzyskać do niej dostęp.
źródło
Ponieważ nie ma natywnego sposobu, aby to zrobić, oto mniej uciążliwe rozwiązanie, które znalazłem (nie dodawaj żadnych `` starych '' metod prototypowych):
źródło
Możesz uzyskać wszystkie zdarzenia jQuery za pomocą $ ._ data ($ ('[selector]') [0], 'events'); zmień [selector] na to, czego potrzebujesz.
Istnieje wtyczka zbierająca wszystkie zdarzenia dołączone przez jQuery o nazwie eventsReport.
Piszę również własną wtyczkę, która robi to z lepszym formatowaniem.
W każdym razie wygląda na to, że nie możemy zebrać zdarzeń dodanych metodą addEventListener. Być może możemy zawinąć wywołanie addEventListener, aby zapisać zdarzenia dodane po naszym wywołaniu zawijania.
Wydaje się, że jest to najlepszy sposób, aby zobaczyć zdarzenia dodane do elementu za pomocą narzędzi programistycznych.
Ale nie zobaczysz tam delegowanych wydarzeń. Więc potrzebujemy jQuery eventsReport.
AKTUALIZACJA: TERAZ Widzimy zdarzenia dodane przez metodę addEventListener ZOBACZ PRAWĄ ODPOWIEDŹ NA TO PYTANIE.
źródło
Nie mogę znaleźć sposobu, aby to zrobić za pomocą kodu, ale w przeglądarce Firefox 64 zdarzenia są wymienione obok każdej jednostki HTML w Inspektorze narzędzi programistycznych, jak zaznaczono na stronie Sprawdzanie detektorów zdarzeń MDN i jak pokazano na tym obrazku:
źródło