2009-05-13 11 views
17

Estoy buscando una forma de depurar una función jQuery document.ready cargada dinámicamente.Haciendo que Firebug se rompa dentro de javascript cargado dinámicamente

Obviamente, no puedo abrir el panel de scripts y agregar un punto de interrupción con el mouse ya que la función no existe allí.

También intenté agregar "depurador"; a la función (sin las comillas), pero eso no hizo nada. Me he asegurado de que la función se ejecute realmente mientras probé esto.

Gracias por su ayuda,

Adrian

Editar: Acabo de notar que Firebug realidad rompe en 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 abrir la implementación de document.ready a través de la pila de llamadas, pero eso realmente no ayuda. ¿Es esto un error de Firebug o me he perdido algo?

+0

¿Ha habilitado la depuración en Firebug para el dominio desde el que carga su página (Panel de consola)? – Cerebrus

+0

Sí, tengo. Tampoco tengo problemas para depurar los scripts en la página que estoy cargando primero, y esa página está en el mismo dominio. Acabo de probar el "depurador"; declaración allí y funcionó bien. Parece que la declaración "depurador" simplemente no está funcionando para scripts cargados dinámicamente. –

Respuesta

17

acabo trabajado en este similar question. La solución implica 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.

Me di cuenta de que si la palabra del depurador se usó solo una vez, no funcionó. Ejemplo:

//myExternal.js 
debugger; 
function myExternalFunction(){ 
debugger; 
/* do something here */ 
} 
+0

Esto realmente funciona! Muchas gracias :-) –

+1

Actualización: Afortunadamente este error ya se ha solucionado en Firebug. No he tenido que emplear este truco durante mucho tiempo ... –

0

Puede tratar de colocar un punto de interrupción donde se llama al evento, y luego, en lugar de hacer clic en "Reproducir", seleccione "Ingresar" (F11). No tengo un caso de prueba frente a mí, pero creo que esto puede funcionar.

-2

También hay una palabra clave '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 para romper en el debugger palabra clave

+0

Gracias, pero como ya he dicho, ya he probado la declaración del depurador y aunque generalmente funciona bien, no funciona en este caso (detalles en mi pregunta). –

+0

ah sí, lo siento :-( – olliej

+0

funciona en Firebug de la misma manera que funciona en cualquier otro navegador –

0

no sé si alguna vez tiene esta resuelto, pero en caso de que alguien más lo necesita ...

llegué alrededor de esta moviendo el código quería depurar a una archivo externo que se vinculó desde la página principal.

En mi caso, tenía default.aspx cargando services.aspx en un div de contenido utilizando jQuery AJAX. A su vez, Services.aspx estaba cargando los elementos de la pestaña jQuery UI utilizando AJAX desde un servicio web que le proporcionaba datos. El código del servicio web estaba en un archivo llamado data.js que estaba enlazado desde default.aspx. Necesitaba depurar el código que estaba en el encabezado de services.aspx (que cargó las pestañas con datos), pero nunca lo pude ver 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!

+0

Sí, eso funciona bien. En mi caso, el código fue generado dinámicamente por el servidor, aunque depende de otros datos en la misma solicitud web. –

0

Acabo de encontrar el mismo comportamiento (Firebug ignorando la declaración debugger; en el código cargado dinámicamente) en Firefox 5.0/Firebug 1.7.3.

Gestionado al separar la ventana de Firebug ("Abrir Firebug en una ventana nueva").

Cuestiones relacionadas