2010-05-17 14 views
10

El proyecto en el que estoy trabajando utiliza jQuery.JavaScript complejo. ¿Qué me llamó?

Tengo una serie de llamadas Ajax que se realizan para cargar() otros fragmentos de HTML que a su vez cargan() otros fragmentos. Todo el asunto es confuso. No escribí el código.

¿Hay alguna herramienta que me permita caminar por la pila de llamadas para poder calcular lo que se llama un método? ¿Alguna herramienta del navegador que me ayude a resolver esto?

Resolución:
Al final, esto era causado porque un guión < src = "..." se está inyectando en el código del lado del servidor. Tus sugerencias fueron de gran ayuda: fue una combinación de esas y configurar temporalmente Ajax para que sincronizara la sincronización que me ayudó a rastrear el problema.

$.ajaxSetup({ 
    async: false 
}); 
+0

Javascript es tan divertido de depurar ¿no? No conozco ninguna herramienta que te permita monitorear la pila, y agregar puntos de quiebre para verificar cosas. El mejor depurador que he usado para JS es firebug: https://addons.mozilla.org/en-US/firefox/addon/1843/ – Jay

+0

@Jay, utilizo VS2008 y establezco puntos de interrupción del código JS todo el tiempo. –

+1

Tenga en cuenta que los métodos ajax serán difíciles de depurar debido a su naturaleza asíncrona: las llamadas que regresan no estarán en la misma pila que las llamadas invocadas. –

Respuesta

8

Firebug es capaz de esto.

Cuando el depurador está en pausa, Firebug le muestra la pila de llamadas, que es el conjunto de llamadas a función anidadas que se están ejecutando actualmente y esperando para regresar.

La pila de llamadas se representa como una tira compacta de botones en la barra de herramientas, cada uno con el nombre de una función en la pila. Puede hacer clic en cualquier botón para saltar a la línea donde está pausada esa función, y observar las variables locales dentro de esa función.

+2

También puede usar "console.trace()" desde la consola para ver la pila de llamadas detallada una vez que el depurador está en pausa. – Rajat

+0

¿Cómo hago una pausa en el momento preciso? ¿Hay una consola.pausa? – BuddyJoe

+0

o debería lanzar una alerta dentro de la función en cuestión? – BuddyJoe

1

Es posible que también desee probar Opera's Dragonfly (disponible en cualquier versión reciente de Opera). Encuentro menos refinado que Firebug, pero algunos errores son mucho más explícitos.

Cuestiones relacionadas