chrome - Haciendo que Firebug se rompa dentro de javascript cargado dinĂ¡micamente
title html (5)
Estoy buscando una manera de depurar una función jQuery document.ready cargada dinámicamente.
Obviamente no puedo abrir el panel de script y agregar un punto de interrupción con el mouse ya que la función no existe allí.
También he intentado agregar "depurador"; A la función (sin las comillas), pero que no hizo nada. Me he asegurado de que la función se ejecute mientras intenté esto.
Gracias por tu ayuda,
Adrián
Editar: Acabo de notar que Firebug realmente se rompe en la depuración. Sin embargo, cuando lo hace en un script cargado dinámicamente, no muestra el código fuente de ese script como de costumbre. Además, la pila de llamadas termina justo debajo de mi propio código. Puedo mostrar la implementación de document.ready a través de la pila de llamadas, pero eso no ayuda. ¿Es este un error de Firebug o me he perdido algo?
Acabo de trabajar en esta pregunta similar . La solución consiste en agregar la palabra depurador dos veces; Una vez en la parte superior del archivo externo y una vez más en la parte superior de la función que necesita ser depurada.
Noté que si la palabra depuradora se usaba solo una vez, no funcionaba. Ejemplo:
//myExternal.js
debugger;
function myExternalFunction(){
debugger;
/* do something here */
}
No sé si alguna vez lo entendiste, pero en caso de que alguien más lo necesite ...
Resolví esto moviendo el código que quería depurar a un archivo externo que estaba vinculado desde la página principal.
En mi caso, tuve default.aspx cargando services.aspx en un div de contenido usando jQuery AJAX. Services.aspx, a su vez, estaba cargando elementos de la pestaña UI de jQuery utilizando AJAX desde un servicio web que le estaba proporcionando datos. El código del servicio web estaba en un archivo llamado data.js que estaba vinculado desde default.aspx. Necesitaba depurar el código que estaba en el encabezado de services.aspx (que cargaba las pestañas con datos), pero nunca pude verlo en ninguno de los inspectores disponibles. Acabo de mover el código que necesitaba a una nueva función en data.js y lo llamé desde el encabezado en services.aspx.
Espero que tenga sentido para alguien que lo necesite!
Puede intentar colocar un punto de interrupción donde se llama al evento y luego, en lugar de hacer clic en "Reproducir", elija "Paso a paso" (F11). No tengo un caso de prueba frente a mí, pero creo que esto puede funcionar.
Se encontró el mismo comportamiento (Firebug ignorando al debugger;
declaración en el código cargado dinámicamente) en Firefox 5.0 / Firebug 1.7.3 .
Se resolvió separando la ventana de Firebug ("Abrir Firebug en una ventana nueva").
También hay una palabra clave de "depurador" que es compatible con el depurador IE JScript y el Inspector web de Safari, por lo que me sorprendería si no fuera compatible con Firebug.
Básicamente:
// mydynamicallyloadedfile.js
... // do stuff
debugger; // triggers debugger
... // more stuff
Y esperaría que Firebug se rompa en la palabra clave del debugger