2010-11-30 15 views
10

¿Hay alguna manera de encontrar qué manejadores de eventos están conectados a un nodo DOM dado?¿Qué controladores de eventos están conectados a un nodo DOM - cómo encontrarlos?

Por ejemplo, cuando hace clic en el enlace "agregar comentario", hay un controlador de eventos adjunto que muestra el formulario de comentarios. Ahora, si tengo un documento DOM (una página web) y quiero enumerar todos los manejadores de eventos para un nodo específico, ¿hay alguna manera de hacerlo?

(sospecho que no es posible que JS corriendo dentro de la página, hacer extensiones del navegador en FF tiene acceso a estos datos?)

+0

Eche un vistazo a esta pregunta: http://stackoverflow.com/questions/446892/how-to-find-event-listeners-on-a-dom-node – McStretch

+0

@McStretch: Útil, gracias. No lo encontré antes, votando para cerrar esto como duplicado. – Piskvor

Respuesta

10

Chrome (y sospecho Safari) puede mostrar detectores de eventos asociados al seleccionar una elemento en el DOM y luego desplácese hacia abajo por la barra lateral derecha hasta la sección de Escucha de eventos. Allí, puede ver qué funciones están adjuntas.

No tengo una copia de Firebug por el momento, pero sospecho que la pestaña DOM también muestra información similar en Firefox.

+0

De hecho, gracias (en Chrome, es decir, FBug 1.6 no lo tiene). – Piskvor

+1

@Piskvor: Firebug tiene una extensión llamada [Eventbug] (http://www.softwareishard.com/blog/firebug/eventbug-alpha-released/) que proporciona una funcionalidad similar. –

+0

@Erik Hesselink: ¡Gracias, parece útil! – Piskvor

1

En Chrome:

  1. "Inspeccionar elemento" en el elemento que desea saber sobre
  2. En los "elementos" pestaña en herramientas de desarrollo, en el panel de la derecha, haga clic en "detectores de eventos "

Esto le mostrará qué controladores de eventos están conectados a ese elemento.

(respuesta de Krof podría haber sido más claramente por escrito.)

8

En Chrome, puede utilizar getEventListeners.

  1. Abiertas Herramientas de Desarrollo
  2. Seleccione el elemento que le interesa
  3. Tipo esta la consola: getEventListeners($0)
  4. pulsa enter.

Se deben devolver los nombres de eventos de asignación de objetos a sus controladores. Tenga en cuenta que $0 es un special dev tools variable que siempre apunta al último elemento seleccionado en las pestañas "Elementos".

+0

La respuesta difiere de la que muestra la pestaña Oyentes de evento. ¿Por qué? – UserControl

+0

Hmm, esa es una buena pregunta. No tengo idea. – Xavi

Cuestiones relacionadas