mientras - ¿Cómo rastrear eventos de JavaScript como onclick onblur?
onfocus html5 (10)
¿Hay alguna forma de depurar o rastrear cada evento de JavaScript en Internet Explorer 7?
Tengo un error que impide el desplazamiento después de seleccionar texto, y no tengo idea de qué evento o acción crea el error. Realmente quiero ver qué eventos se desencadenan cuando muevo el mouse, por ejemplo.
Es demasiado trabajo volver a conectar la fuente y esperaba que hubiera algo así como un rastreador que me muestra todos los eventos que se desencadenan.
Es básico, pero puedes pegar alertas o llamadas a doblar documentos cuando disparas algo.
La forma más obvia sería configurar algunas alertas para varios eventos, como por ejemplo:
element.onclick = function () { alert(''Click event''); }
De lo contrario, tiene una opción menos intrusiva de insertar sus alertas en algún lugar.
Pero, considere seriamente el uso de una biblioteca como jQuery para implementar su funcionalidad. Muchos de los problemas con navegadores cruzados se resuelven y no es necesario que los resuelva nuevamente. No estoy seguro exactamente de la funcionalidad que está tratando de lograr, pero probablemente hay muchos desplazamientos y selecciones de complementos para jQuery que podría usar.
Mi sugerencia es usar FireFox junto con FireBug y usar los objetos integrados Debug / Trace. Ellos son un encanto.
@ [nickf] - Estoy bastante seguro de que document.all
es una extensión específica de Internet Explorer.
Debe adjuntar un controlador de eventos, no hay forma de simplemente ''mirar'' los eventos. Un marco como jQuery de la biblioteca Microsoft Ajax le dará fácilmente los métodos para agregar los controladores de eventos. jQuery es bueno debido a su marco selector.
Luego uso Firebug (extensión de Firefox) y pongo un punto de interrupción. Creo que Firebug es mucho más fácil de configurar y destruir que Visual Studio 2008.
Borkdude dijo:
Es posible que desee probar Visual Studio 2008 y su función para depurar código JavaScript.
He estado manipulando el manejo de eventos varias veces, y en mi opinión, aunque los depuradores de pasos clásicos son útiles para rastrear largas ejecuciones de código, no son buenos en el seguimiento de eventos. Imagínese escuchar los eventos de movimiento del mouse y acceder a otra aplicación en cada evento ... Por lo tanto, en este caso, le recomiendo que inicie sesión.
Si el problema no es específico de Internet Explorer 7 sino que también ocurre en Firefox, entonces otra buena manera de depurar código JavaScript es Firefox y el complemento Firebug que tiene un depurador de JavaScript.
Y también está Firebug Lite para Internet Explorer. No tuve la oportunidad de usarlo, pero existe. :-) La desventaja de esto es que no es un depurador completamente desarrollado, pero tiene un objeto window.console, que es exactamente lo que necesita.
Es posible que desee probar Visual Studio 2008 y su función para depurar código JavaScript.
Si el problema no es específico de Internet Explorer 7 sino que también ocurre en Firefox, entonces otra buena manera de depurar código JavaScript es Firefox y el complemento Firebug que tiene un depurador de JavaScript. Luego también puede colocar instrucciones console.log
en el código JavaScript que luego puede ver en Firebug en la ventana de la consola , en lugar de usar alertas que a veces arruinan la cadena de eventos.
Haz un bucle a través de todos los elementos en la página que tienen una función onXYZ definida y luego agrégale el rastro:
var allElements = document.all; // Is this right? Anyway, you get the idea.
for (var i in allElements) {
if (typeof allElements[i].onblur == "function") {
var oldFunc = allElements[i].onblur;
allElements[i].onblur = function() {
alert("onblur called");
oldFunc();
};
}
}
Matt Berseth tiene algo que puede ser el tipo de cosa que está buscando en la depuración de aplicaciones ASP.NET AJAX con Trace Console AjaxControlToolkit Control .
Se basa en el registrador Yahoo YUI , YUI 2: Logger .
No estoy seguro del código exacto (ha pasado un tiempo desde que escribí el código JavaScript complejo), pero podría enumerar todos los controles del formulario y adjuntar un evento que genere algo cuando se desencadene el evento.
Incluso podría usar funciones anónimas para ajustar la información necesaria para identificar qué evento se estaba desencadenando.
Una cosa que me gusta hacer es crear una función de enlace en JavaScript (como lo que puedes encontrar en la biblioteca de Prototype ) específicamente para eventos, de modo que pase el objeto "evento" a lo largo de la función enlazada. Ahora, si tuviera que hacer esto, podría simplemente invocar una llamada de seguimiento que se invocará para cada controlador que lo use. Y luego quítelo cuando no sea necesario. Un lugar. Fácil.
Sin embargo, independientemente de cómo se llame a la instrucción de seguimiento, aún desea verla. La mejor estrategia es tener un panel o ventana independiente que distribuya las llamadas de seguimiento. Dojo Toolkit tiene una consola integrada que se ejecuta en Internet Explorer, y hay otras cosas similares por ahí. La forma clásica de hacerlo es crear una nueva ventana y document.write
. document.write
en él.
- Recomiendo adjuntar una fecha y hora a cada rastreo. Me ayudó mucho en el pasado.
- La depuración y las alertas generalmente no lo ayudarán, ya que interrumpe el flujo de eventos normales.