Respuesta

51

Por supuesto que puedes hacerlo bien con Firebug, la consola y la pestaña de scripts donde puedes agregar puntos de interrupción y relojes, pero obviamente quieres hacerlo de forma más inteligente/fácil.

Hay un plugin Firebug limpio llamado EventBug que simplemente registra todos los eventos y los agrupa por tipo de evento para que pueda expandir y ver lo que los desencadenó.

EventBug Screenshot

EventBug no hacerlo en tiempo real, usted tiene que actualizar sin embargo.

Otra forma es utilizar la función 'Registrar eventos' contra cualquier elemento DOM en Firebug. Esto lo hace en tiempo real y puede ver en qué orden se disparan/activan los eventos.

Prueba esto:

  • Toggle Firebug abierta
  • Haga clic derecho en el elemento en la ficha HTML, si desea ver todos los eventos a continuación, haga clic derecho <body>
  • Elija Log Events en el menú contextual
  • Asegúrese de que la pestaña Consola esté habilitada
  • Haga clic para habilitar el modo 'Persistir' en la pestaña Consola (de lo contrario, la pestaña Consola se borrará después de que la página se vuelva a cargar)
  • Quizás tenga que seleccionar Closed (manualmente)
  • Voila! ver eventos de flujo en la pestaña de la consola

Esto es lo que se ve con los sucesos de registro:

enter image description here

También vale la pena probar la FireQuery complemento para Firebug para ver qué elementos en el DOM tiene jQuery eventos asociados a ellos y lo que son.

Y como la respuesta de benvie menciona, esto también es posible en las herramientas de desarrollo de webkit.

+0

No, si usted tiene que hacerse cargo de una solución y no tiene idea de qué evento hace que el insecto. – gsharp

+0

@gsharp ¿No puedes usar el perfil, el inicio de sesión en la consola y los puntos de interrupción para descubrir el error? ¿Proporciona algún error a la consola? Firebug es prácticamente la última elección en la depuración de JS. – dakdad

+0

Ya estoy trabajando con Firebug. Solo deseo una herramienta que me muestre qué evento se disparó en qué orden. De hecho, podría hacerlo con logging y puntos de interrupción, pero si el * .js es super y aún no está familiarizado con el código, podría ayudar mucho. – gsharp

4

Esto no existe en Firebug, creo, y el problema subyacente es la falta de soporte o la falta de exposición en el nivel de API. Alternativamente, hay solo algunas formas de suscribirse a eventos DOM: Element.prototype.addEventListener (y window.addEventListener y document.addEventListener y XMLHttpRequest.addEventListener y algunos otros) además de las propiedades 'onevent' que son observables e interceptables.

Pero, en realidad, el depurador de WebKit y el depurador de Chromium (que es un webkit con puntos extra) permiten depurar y observar los oyentes conectados. A veces es más fácil depurar los errores de un navegador en otro navegador con una mejor exposición del estado de la aplicación/tiempo de ejecución, incluso cuando ese navegador no muestra el error.

enter image description here

https://developers.google.com/chrome-developer-tools/docs/elements

+1

Para aclarar, cada herramienta de desarrollo tiene sus puntos fuertes. Firebug, por ejemplo, tiene soporte para mostrar propiedades heredadas, así como valores de acceso como propiedades, y tiene configuraciones que controlan algunas de estas configuraciones. El depurador de webkit, por otro lado, no tiene ninguna opción para mostrar propiedades heredadas o para resolver accesos a su valor. A menos que cuente sobrescribir Object.getOwnProperty [Names | Descriptor] con sus propias funciones personalizadas. –

+0

Ver mi respuesta actualizada más arriba. Firefox/Firebug te permite hacer esto. –

+1

También tomo otra cosa que dije atrás. No conozco algo, es decir, las herramientas de desarrollo se destacan en .. –

7

Esto se ha introducido hace algunas versiones pero a partir de Firefox 35 sucesos relacionados con un elemento puede ser visto en el Inspector: al lado del elemento que desea ver los eventos (en caso de que haya alguno) habrá un ícono con las letras 'EV'. Haga clic en él y verá una pequeña ventana emergente con los eventos para ese elemento.

Firefox events inspector

Más información: http://flailingmonkey.com/view-dom-events-in-firefox-developer-tools/

+1

Eso es genial, pero lo que necesito para "ver" es qué evento se desencadena. ¿Es eso posible también? – gsharp

+1

Esa característica se incluye a partir de Firefox 33: https://hacks.mozilla.org/2014/07/event-listeners-popup-media-sidebar-cubic-bezier-editor-more-firefox-developer-tools-episode-33/Firefox 34 capaz de resolver el envoltorio de jQuery al código del evento real: https://hacks.mozilla.org/2014/09/webide-storage-inspector-jquery-events-iframe-switcher-more-firefox-developer-tools-episode -34 / – gavenkoa

Cuestiones relacionadas