Ich habe mir diese Fragen bereits angesehen:
- Wie finde ich Ereignis-Listener auf einem DOM-Knoten beim Debuggen oder aus dem JavaScript-Code?
- Kann ich Javascript-Ereignishandler für HTML-Elemente programmgesteuert untersuchen und ändern?
- Debuggen von JavaScript / jQuery-Ereignisbindungen mit Firebug (oder einem ähnlichen Tool)
Keiner von ihnen antwortet jedoch, wie eine Liste von Ereignis-Listenern abgerufen werden kann, die mit einem Knoten verbunden sind addEventListener
, ohne den addEventListener
Prototyp zu ändern, bevor die Ereignis-Listener erstellt werden.
VisualEvent zeigt nicht alle Ereignis-Listener (iPhone-spezifische) an, und ich möchte dies (etwas) programmgesteuert tun.
javascript
dom-events
Tyilo
quelle
quelle
Antworten:
Chrome DevTools, Safari Inspector und Firebug unterstützen getEventListeners (Knoten) .
quelle
Das kannst du nicht.
Die einzige Möglichkeit, eine Liste aller an einen Knoten angehängten Ereignis-Listener abzurufen, besteht darin, den Aufruf des Listener-Anhangs abzufangen.
DOM4 addEventListener
Sagt
Dies bedeutet, dass ein Ereignis-Listener zur "Liste der Ereignis-Listener" hinzugefügt wird. Das ist alles. Es gibt keine Vorstellung davon, wie diese Liste aussehen soll und wie Sie darauf zugreifen sollen.
quelle
Da es keinen nativen Weg gibt, dies zu tun, habe ich hier eine weniger aufdringliche Lösung gefunden (keine 'alten' Prototypmethoden hinzufügen):
quelle
Sie können alle jQuery-Ereignisse mit $ ._ data ($ ('[Selektor]') [0], 'Ereignisse') abrufen. Ändern Sie [Selektor] auf das, was Sie brauchen.
Es gibt ein Plugin, das alle von jQuery angehängten Ereignisse mit dem Namen eventsReport sammelt.
Außerdem schreibe ich mein eigenes Plugin, das dies mit besserer Formatierung tut.
Es scheint jedoch, dass wir keine Ereignisse erfassen können, die mit der Methode addEventListener hinzugefügt wurden. Möglicherweise können wir den Aufruf von addEventListener umbrechen, um Ereignisse zu speichern, die nach unserem Aufruf von wrap hinzugefügt wurden.
Es scheint der beste Weg zu sein, Ereignisse zu sehen, die einem Element mit Entwicklungswerkzeugen hinzugefügt wurden.
Sie werden dort jedoch keine delegierten Ereignisse sehen. Da brauchen wir also jQuery eventsReport.
UPDATE: JETZT KÖNNEN Ereignisse angezeigt werden, die mit der Methode addEventListener hinzugefügt wurden. SIEHE RICHTIGE ANTWORT AUF DIESE FRAGE.
quelle
Ich kann keine Möglichkeit finden, dies mit Code zu tun, aber in Firefox 64 werden Ereignisse neben jeder HTML-Entität im Developer Tools Inspector aufgelistet, wie auf der MDN- Seite " Ereignis-Listener untersuchen " angegeben und in diesem Bild gezeigt:
quelle