2010-10-07 7 views
7

Estoy trabajando con COGNOS, una aplicación de BI muy frustrante que depende en gran medida de Javascript. Básicamente, cuando se cambia un cuadro <select>, los datos en la pantalla se actualizan, presumiblemente mediante una función AJAX o algo similar. Me gustaría forzar este cambio usando jQuery, pero no estoy seguro de cómo interceptar la llamada que está haciendo para poder duplicarla. También hay una tonelada métrica de código JS, por lo que es difícil de encontrar a mano.¿Cómo capturo las funciones de Javascript que se están llamando?

¿Hay alguna manera de usar Firebug para visualizar las diferentes funciones que se están llamando? ¿Mi enfoque es correcto?

Respuesta

11

Si abre el panel Firebug Script, en la parte superior izquierda hay un botón que se parece a un botón de pausa en un control remoto de TV: ||. Eso le dice a Firebug que haga una pausa en el próximo bit de JavaScript que se ejecuta. Para que la página se abra, asegúrese de que el panel Script esté habilitado, haga clic en ese botón y luego cambie el cuadro select. Eso debe disparar un punto de interrupción en Firebug, después de lo cual puede recorrer el código para averiguar a qué se llama cuando.

Alternativamente, si no le importa usar una herramienta diferente, Google Chrome tiene un depurador e inspector integrado que le puede mostrar los controladores de eventos conectados a un elemento. En Chrome, si abre la página, haga clic con el botón derecho en el cuadro select y seleccione Inspeccionar elemento, luego, en el lado derecho en la parte inferior, debe haber una lista de los controladores de eventos adjuntos. Eso puede ser un poco más fácil de trabajar.

Por último, en cualquiera de las herramientas, si se puede identificar el fragmento de código en las tripas que en realidad causan la recarga de datos (mediante la búsqueda de una dirección URL, por ejemplo, o una instancia XmlHTTPRequest, o de .ajax, .post, .get jQuery, o .getJSON funciona si está usando jquery), puede poner un punto de interrupción en eso y luego activar la selección, luego mirar la pila de llamadas (en el lado derecho de ambas herramientas).

¡Buena suerte!

+0

Prefiero usar GC en realidad, pero no creo que funcione con Cognos. Lo probaré e informaré. Gracias TJ! – Nic

+0

Eep. Ok, entonces no hay suerte en Chrome porque Cognos no lo admite.Así que volví a FF/FB y usé la pausa como se sugiere. Activé una llamada AJAX, pero el script no se rompió. Hice esto antes de hacer la pregunta, pensando que había hecho algo mal. ¿Algunas ideas? La llamada AJAX aún se envió. – Nic

+0

@melee: Wow. En realidad, guau^2 porque estoy sorprendido de que Cognos no funcione con Chrome (¿qué están haciendo, husmeando en el navegador? Tsk). Lamentablemente, si el descanso no funcionó, todo lo que puedes hacer es descubrir cómo están adjuntando el controlador (fácil si el 'seleccionar' tiene un' id' o incluso un 'onclick', más difícil si no lo hace) y ponga un punto de interrupción en el controlador que encuentre. Pero tú lo sabías :-(¡Buena suerte! –

0

Si está utilizando Firefox + Firebug puede activar la pestaña "net" y examinar todas las llamadas Ajax realizadas. (mire bajo el botón XHR)

+0

Derecha, esa es la llamada que se hace con los datos de la publicación, pero ¿muestra la función real que realizó la llamada AJAX? (¿Tiene sentido?) – Nic

0

Seleccione el Elemento en Firefox y vea cuál es su evento onclick o si tiene una identificación, luego busque el archivo JS para esa ID.

+0

Intenté que, desafortunadamente, creo que se está ejecutando una función onChange. – Nic

1

Lamentablemente, en este punto, es probable que sea mejor en Cognos utilizando el método de depuración anticuado recuadro de alerta. IBM ha dicho que las versiones más nuevas de Cognos funcionarán en Firefox, pero el código pre-IBM fue muy centrado en IE, y ni siquiera especialmente bueno en las nuevas versiones de IE. También puede usar la funcionalidad del depurador F12 en las versiones más nuevas de IE, que a veces es útil. No pretendo que nada de esto sea tan bueno como Firebug.

Además, con respecto al problema real que intentaba depurar, la selección en Cognos, si hace clic en él mientras edita el informe, tiene un parámetro llamado "Envío automático". Si cambia eso a "no", entonces no necesitará deshabilitar el comportamiento en jQuery.

Cuestiones relacionadas