2009-05-13 14 views
17

Sto cercando un modo per eseguire il debug di una funzione document.ready jQuery caricato dinamicamente.Fare Firebug rompere all'interno javascript caricata dinamicamente

Ovviamente non posso solo portare il pannello di script e aggiungere un punto di interruzione con il mouse dal momento che la funzione non esiste là.

Ho anche provato ad aggiungere "debugger;" alla funzione (senza le virgolette), ma ciò non ha fatto nulla. Mi sono assicurato che la funzione sia effettivamente eseguita mentre ho provato questo.

Grazie per il vostro aiuto,

Adrian

Edit: Ho appena notato che Firebug rompe in realtà su di debug. Tuttavia, quando lo fa su uno script caricato dinamicamente, non mostra come al solito il codice sorgente di quello script. Inoltre, lo stack di chiamate termina proprio sotto il mio codice. Posso richiamare l'implementazione per document.ready attraverso lo stack delle chiamate, ma questo non aiuta molto. È un bug di Firebug o mi sono perso qualcosa?

+0

Hai attivato il debug in Firebug per il dominio da cui viene caricata la pagina (pannello della console)? – Cerebrus

+0

Sì, ho. Inoltre, non ho problemi a eseguire il debug degli script nella pagina che sto caricando per primi e quella pagina si trova nello stesso dominio. Ho appena provato il "debugger"; dichiarazione lì e ha funzionato bene. Quindi sembra che la "debugger statment" non funzioni solo per gli script caricati dinamicamente. –

risposta

17

Ho appena lavorato su questo similar question. La soluzione consiste nell'aggiungere due volte il debugger di parole; una volta nella parte superiore del file esterno e un'altra volta nella parte superiore della funzione che deve essere sottoposta a debug.

ho notato che se la parola debugger è stato utilizzato solo una volta, non ha funzionato. Esempio:

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

Questo funziona davvero! Grazie mille :-) –

+1

Aggiornamento: Per fortuna questo bug è stato risolto a lungo in Firebug già. Non ho dovuto impiegare questo trucco per molto tempo ... –

0

si potrebbe provare a mettere un punto di rottura in cui viene chiamato l'evento, e allora invece di fare clic su "Play", scegliere "Step Into" (F11). Non ho un caso di test di fronte a me, ma penso che questo possa funzionare.

-2

C'è anche una parola chiave "debugger" supportata dal debugger di IE JScript e da Safari's Web Inspector, quindi sarei sorpreso se non fosse supportato in firebug.

In sostanza:

// mydynamicallyloadedfile.js 
... // do stuff 
debugger; // triggers debugger 
... // more stuff 

e mi aspetto Firebug per rompere al debugger parola chiave

+0

Grazie, ma come ho già detto, ho già provato l'istruzione debugger e, sebbene di solito funzioni correttamente, in questo caso non funziona (dettagli nella mia domanda). –

+0

ah sì, mi dispiace :-( – olliej

+0

funziona su firebug nello stesso modo in cui funziona su qualsiasi altro browser –

0

Non so se avete mai avuto questo capito, ma nel caso in cui qualcun altro ne ha bisogno ...

ho avuto intorno a questo spostando il codice ho voluto eseguire il debug a un file esterno che è stato collegato dalla pagina principale.

Nel mio caso, avevo default.aspx che carica services.aspx in un content div usando jQuery AJAX. Services.aspx a sua volta stava caricando gli elementi della scheda dell'interfaccia utente jQuery utilizzando AJAX da un servizio Web che forniva i dati. Il codice del servizio web era in un file chiamato data.js che era collegato da default.aspx. Avevo bisogno di eseguire il debug del codice presente nell'intestazione di services.aspx (che caricava le schede con i dati), ma non riuscivo a vederlo in nessuno degli ispettori disponibili. Ho appena spostato il codice di cui avevo bisogno per una nuova funzione in data.js e l'ho chiamato dall'intestazione in services.aspx.

spero che abbia un senso a qualcuno che ne ha bisogno!

+0

Sì, va bene. Nel mio caso il codice è stato generato dinamicamente dal server anche se dipende da altri dati nella stessa richiesta web. –

0

Si è verificato lo stesso comportamento (Firebug ignorava l'istruzione debugger; nel codice caricato dinamicamente) in Firefox 5.0/Firebug 1.7.3.

Lavorato in giro staccando la finestra di Firebug ("Apri Firebug in una nuova finestra").

Problemi correlati