¿Hay alguna forma de ver qué funciones / código se adjuntan a cualquier evento para un elemento DOM? Usando Firebug o cualquier otra herramienta.
javascript
events
Claudio Redi
fuente
fuente
Respuestas:
Los controladores de eventos adjuntos mediante
element.onclick= handler
HTML o tradicional<element onclick="handler">
se pueden recuperar de forma trivial desde laelement.onclick
propiedad desde el script o en el depurador.Los controladores de eventos adjuntos mediante los
addEventListener
métodos de eventos DOM Nivel 2 e IEattachEvent
no se pueden recuperar actualmente del script. DOM Level 3 una vez propusoelement.eventListenerList
obtener todos los oyentes, pero no está claro si esto llegará a la especificación final. Actualmente, no hay implementación en ningún navegador.Una herramienta de depuración como extensión del navegador podría tener acceso a este tipo de oyentes, pero no conozco ninguno que realmente lo haga.
Algunos frameworks JS dejan suficiente registro de enlace de eventos para averiguar lo que han estado haciendo. Visual Event adopta este enfoque para descubrir oyentes registrados a través de algunos marcos populares.
fuente
El Panel de elementos en las herramientas para desarrolladores de Google Chrome ha tenido esto desde los lanzamientos de Chrome a mediados de 2011 y los lanzamientos del canal de desarrolladores de Chrome desde 2010.
Además, los detectores de eventos que se muestran para el nodo seleccionado están en el orden en que se activan a través de las fases de captura y propagación.
Presione command+ option+ ien Mac OSX y Ctrl+ Shift+ ien Windows para iniciar esto en Chrome
fuente
window
objeto, como elmessage
evento?Chrome Dev Tools anunció recientemente algunas herramientas nuevas para monitorear eventos de JavaScript .
Encontrar eventos personalizados
Para mi necesidad, al descubrir eventos JS personalizados en código de terceros, las siguientes dos versiones
getEventListeners()
fueron increíblemente útiles;getEventListeners(window)
getEventListeners(document)
Si sabe a qué nodo DOM se adjuntó el detector de eventos, lo pasaría en lugar de
window
odocument
.Evento conocido
Si usted sabe qué evento que desea supervisar, por ejemplo
click
en el cuerpo del documento se puede utilizar el siguiente:monitorEvents(document.body, 'click');
.Ahora debería comenzar a ver todos los eventos de clic en el
document.body
registro en la consola.fuente
Puede ver los eventos adjuntos directamente (element.onclick = handler) mirando el DOM. Puede ver los eventos adjuntos de jQuery en Firefox usando FireBug con FireQuery. No parece haber ninguna forma de ver los eventos agregados de addEventListener usando FireBug. Sin embargo, puede verlos en Chrome usando el depurador de Chrome.
fuente
Puede utilizar Visual Event de Allan Jardine para inspeccionar todos los controladores de eventos adjuntos actualmente de varias de las principales bibliotecas de JavaScript de su página. Funciona con jQuery, YUI y varios otros.
Visual Event es un marcador de JavaScript, por lo que es compatible con los principales navegadores.
fuente
Puede ampliar su entorno javascript para realizar un seguimiento de los oyentes de eventos. Envuelva (o 'sobrecargue') el método nativo addEventListener () con algún código que pueda mantener un registro de cualquier detector de eventos agregado a partir de ese momento . También tendría que extender HTMLElement.prototype.removeEventListener para mantener registros que reflejen con precisión lo que está sucediendo en el DOM.
Solo por el bien de la ilustración (código no probado): este es un ejemplo de cómo 'envolvería' addEventListener para tener registros de los oyentes de eventos registrados en el propio objeto:
fuente