Pregunta

¿Existe 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 activan cuando muevo el mouse, por ejemplo.

Es demasiado trabajo volver a cablear la fuente y esperaba que hubiera algo así como un rastreador que me muestre todos los eventos que se activan.

¿Fue útil?

Solución

Borkdude dijo:

Quizás quieras probar Visual Studio 2008 y su función para depurar código JavaScript.

He estado pirateando el manejo de eventos varias veces y, en mi opinión, aunque los depuradores paso a paso clásicos son útiles para rastrear ejecuciones de código largas, no son buenos para rastrear eventos.Imagínese escuchar los eventos de movimiento del mouse e ingresar a otra aplicación en cada evento...Entonces, en este caso, recomiendo encarecidamente iniciar 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 el código JavaScript es Firefox y el insecto de fuego complemento que tiene un depurador de JavaScript.

Y también hay Firebug Lite para Internet Explorer.No tuve oportunidad de usarlo, pero existe.:-) La desventaja es que no es un depurador completo, pero tiene un objeto window.console, que es exactamente lo que necesitas.

Otros consejos

Recorra todos los elementos de la página que tienen una función onXYZ definida y luego agrégueles el seguimiento:

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();
        };
    }
}

Quizás quieras 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 el código JavaScript es Firefox y el insecto de fuego complemento que tiene un depurador de JavaScript.Entonces también puedes poner console.log declaraciones en el código JavaScript, cuyo resultado luego puede ver en el Ventana de consola en Firebug, en lugar de usar alertas que a veces estropean la cadena de eventos.

@[nickf] - Estoy bastante seguro document.all es una extensión específica de Internet Explorer.

Debe adjuntar un controlador de eventos; no hay forma de simplemente "observar" los eventos.Un marco como jQuery de la biblioteca Microsoft Ajax le brindará fácilmente métodos para agregar 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 desmantelar que Visual Studio 2008.

Es básico, pero puedes incluir alertas o documentar llamadas cuando activas algo.

La forma 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 del dom.

Pero considere seriamente usar una biblioteca como jQuery para implementar su funcionalidad.Muchos de los problemas entre navegadores son problemas resueltos y no es necesario volver a resolverlos.No estoy seguro exactamente de la funcionalidad que está tratando de lograr, pero lo más probable es que haya muchos complementos de desplazamiento y selección para jQuery que pueda usar.

No estoy seguro del código exacto (ha pasado un tiempo desde que escribí código JavaScript complejo), pero puede enumerar todos los controles del formulario y adjuntar un evento que genere algo cuando se activa el evento.

Incluso podría utilizar funciones anónimas para empaquetar la información necesaria para identificar qué evento se está desencadenando.

Una cosa que me gusta hacer es crear una función de enlace en JavaScript (como la que puedes encontrar en el Prototipo biblioteca) específicamente para eventos, de modo que pase el objeto "evento" a la función vinculada.Ahora, si hiciera esto, simplemente podría realizar una llamada de seguimiento que se invocará para cada controlador que la utilice.Y luego retírelo cuando no sea necesario.Un lugar.Fácil.

Sin embargo, independientemente de cómo consiga que se llame a la declaración de seguimiento, aún querrá verla.La mejor estrategia es tener un panel o ventana independiente que administre las llamadas de seguimiento. Kit de herramientas de dojo tiene una consola incorporada que se ejecuta en Internet Explorer y existen otras cosas similares.La forma clásica de hacerlo es crear una nueva ventana y document.write lo.

  • Recomiendo adjuntar una fecha y hora a cada seguimiento.Me ayudó considerablemente en el pasado.
  • La depuración y las alertas normalmente no le ayudarán porque interrumpen el flujo normal de eventos.

Matt Berseth tiene algo que puede ser el tipo de cosa que estás buscando. Depuración de aplicaciones ASP.NET AJAX con el control Trace Console AjaxControlToolkit.

Está basado en Yahoo. Yui registrador, Yui 2:registrador.

Mi sugerencia es usar FireFox junto con FireBug y usar los objetos Debug/Trace integrados.Son un encanto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top