2010-10-07 23 views
7

Sto lavorando con COGNOS, un'applicazione BI molto frustrante che fa molto affidamento su Javascript. Fondamentalmente, quando una casella viene modificata, i dati sullo schermo vengono aggiornati, presumibilmente da una funzione AJAX o qualcosa di simile. Mi piacerebbe forzare questa modifica usando jQuery, ma non sono sicuro di come intercettare la chiamata che sta facendo in modo da poterla duplicare. C'è anche una tonnellata di codice JS, quindi è difficile da trovare a mano.Come posso rilevare le funzioni Javascript chiamate?

C'è un modo per utilizzare Firebug per visualizzare le diverse funzioni chiamate? Il mio approccio è corretto?

risposta

11

Se si apre il pannello Firebug Script, in alto a sinistra è presente un pulsante che assomiglia ad un pulsante di pausa su un telecomando TV: ||. Questo dice a Firebug di mettere in pausa il prossimo bit di JavaScript che viene eseguito. Quindi aprirò la pagina, assicurati che il pannello Script sia abilitato, fai clic su quel pulsante, quindi modifica la casella select. Che dovrebbe innescare un punto di interruzione in Firebug, dopo di che è possibile scorrere il codice per capire cosa viene chiamato quando.

In alternativa, se non ti dispiace usare uno strumento diverso, Google Chrome ha un debugger e un inspector incorporato che possono mostrarti i gestori di eventi collegati a un elemento. Pertanto, in Chrome, se apri la pagina, fai clic con il pulsante destro del mouse sulla casella select e scegli Elemento di ispezione, quindi sul lato destro in basso dovrebbe esserci un elenco di gestori di eventi collegati ad esso. Potrebbe essere un po 'più facile lavorare con

Infine, in uno dei due strumenti, se è possibile identificare il pezzo di codice nelle budella che è effettivamente causando la ricarica dei dati (con la ricerca di un URL, per esempio, o un XmlHTTPRequest esempio, o di .ajax, .post, .get jQuery, o .getJSON funzioni se sta utilizzando jquery), è possibile inserire un punto di interruzione su quello e quindi attivare la selezione, quindi guardare lo stack di chiamate (sul lato destro in entrambi gli strumenti).

Buona fortuna!

+0

Preferisco utilizzare GC in realtà, ma non pensavo che avrebbe funzionato con Cognos. Farò un tentativo e riferire. Grazie TJ! – Nic

+0

Eep. Ok, quindi non c'è fortuna in Chrome perché non è supportato da Cognos.Così sono tornato su FF/FB e ho usato la pausa come suggerito. Ho attivato una chiamata AJAX, ma lo script non si è interrotto. L'ho fatto prima di porre la domanda, pensando di aver fatto qualcosa di sbagliato. Qualche idea? La chiamata AJAX è stata ancora inviata. – Nic

+0

@melee: Wow. In realtà, wow^2 perché sono sorpreso che Cognos non funzioni con Chrome (cosa stanno facendo, browser sniffing? Tsk). Purtroppo, se la pausa non ha funzionato, tutto ciò che puoi fare è scoprire come stanno collegando il gestore (facile se 'select' ha un' id' o anche un 'onclick', più difficile se non lo è) e inserisci un punto di interruzione sul gestore che trovi. Ma lo sapevi. :-(Buona fortuna! –

0

Se si utilizza Firefox + Firebug è possibile attivare la scheda "net" ed esaminare tutte le chiamate Ajax effettuate. (guarda sotto il pulsante XHR)

+0

Sì, è la chiamata che viene effettuata con i dati del post, ma mostra la funzione effettiva che ha effettuato la chiamata AJAX? (Questo ha senso?) – Nic

0

Selezionare l'elemento in Firefox e vedere qual è il suo evento onclick o se ha un ID, quindi cercare il file JS per quell'ID.

+0

Ho provato che, sfortunatamente, penso che sia in esecuzione una funzione onChange. – Nic

1

Purtroppo, a questo punto, è probabile che tu stia meglio in Cognos utilizzando il metodo di debug della casella di avviso vecchio stile. IBM ha affermato che le versioni più recenti di Cognos funzioneranno in Firefox, ma il codice pre-IBM era molto incentrato sullo IE, e nemmeno particolarmente buono nelle nuove versioni di IE. È inoltre possibile utilizzare la funzionalità di debugger F12 nelle versioni più recenti di IE, che a volte è utile. Non credo che tutto questo sia buono come Firebug.

Inoltre, per quanto riguarda il problema effettivo che si stava tentando di eseguire il debug, la selezione in Cognos, se si fa clic su di esso durante la modifica del report, ha un parametro chiamato "Invio automatico". Se lo cambi in "no", non dovrai disabilitare il comportamento in jQuery.

Problemi correlati