2009-09-11 13 views
5

Sto lavorando a un nuovo progetto con alcuni javascript complessi. Non posso pubblicare alcun codice quindi non è quello di cui si tratta la mia domanda.È possibile Firebug per eseguire il mio sito Web?

Ho uno script che funziona in Firefox 3.0. È stato sottolineato che lo script non funzionava in Firefox 3.5, quindi sto cercando di farlo funzionare. Infatti lo script non ha prodotto i risultati attesi, quindi ho installato l'ultima versione di Firebug, abilitato il console e aggiornato la pagina.

E wow, ha funzionato.

Nessun errore, nessuna avvertenza.

Così ho disabilitato la console, e poi non ha funzionato più ...

cosa sta succedendo qui? La console Firebug in qualche modo cambia qualcosa in Firefox che fa funzionare il mio script? Qualche consiglio su quale sarà il prossimo? (oltre a chiedere ai futuri visitatori di installare Firebug ...)

risposta

10

Potrebbe essere qualcosa di semplice come dimenticare di commentare una chiamata a console.log() da qualche parte nel tuo javascript?

Se si dispone di riferimenti sospesi e l'utente non ha installato Firebug, si otterrà un errore di runtime che interromperà l'esecuzione dello script.

+2

+1 Questo sembra il colpevole più probabile – patros

+0

Sì, sembra abbastanza probabile. Ci ho pensato per un secondo, ma dato che non avevi installato firebug in un primo momento non sarebbe stato lì, ma dopo aver letto questa risposta ho capito che ci sono buone probabilità che copiando e incollando il codice ci fosse un po 'di debug. +1 – NateDSaint

+0

Non so, devo dare il beneficio del dubbio allo sviluppatore che sarebbe in grado di riconoscere un errore così ovvio. – Zoidberg

7

Mi sembra che ci sia una possibilità di avere un problema di threading e FireBug sta analizzando e forse rallentando uno dei thread in modo che abbia il tempo di completare prima che il prossimo passo sia risolto.

Stai forse utilizzando ajax e qualcosa sta aspettando quella risposta? O forse stai facendo qualcosa su o dopo il carico di un oggetto che dipende da qualcos'altro nel DOM?

AGGIORNAMENTO: Per coloro che inciampano su questo ora, i "thread" in JavaScript esistono solo nell'astrazione (web worker, ecc.). Stavo usando male il termine. Stavo davvero pensando ad un'azione asincrona che è tornata prima che un'altra fosse pronta.

+0

Questo avrebbe senso dal motore JavaScript di Firefox sembra ottenere più velocemente con ogni rilascio. – Zoidberg

+0

Non so se è giusto, ma +1 per la buona analisi – marcgg

+0

Sto usando ajax sì, penso comunque che Justin abbia ragione riguardo a console.log() :) – Ropstah

6

Controllare il codice per console.log(), console.debug(). Chiamare i metodi di oggetti window.console genera un errore se la console non è definita (come previsto).

Nella maggior parte dei casi è possibile eliminare o commentare facilmente tali righe.

+0

Grazie! Prima rispondevi, quindi il credito è tuo :) – Ropstah

+0

@ropstah Non è importante ... ma controlla i tuoi calcoli. Questa è l'ultima risposta, non la prima. –

+0

Whoops, hai ragione, ero davvero sotto influenza mentre leggevo "8 minuti fa" di Mushex e il tuo "9 minuti fa" Justin ... :) – Ropstah

0

Ho scritto un semplice wrapper per firebug (uso solo il debug ma dovrebbe darti quello che ti serve per duplicare gli altri metodi) che scrive solo quando c'è la console così posso usare firebug, non c'è bisogno di andare commenta le mie dichiarazioni di debug e non rompe i siti per le persone senza di essa.

Se si utilizza questo codice utilizzare fbconsole.debug invece di console.debug si avrà mai questo problema:

function fbconsole() { 
    this.debug = function (val) { 
     if(typeof(console) !== 'undefined' && console != null) { 
      console.debug(val); 
      } 
     } 
    } 
var fbconsole = new fbconsole(); 
+0

Bello, ma penso che sia meglio rimuovere le istruzioni di debug prima che tutto vada in diretta :) – Ropstah

Problemi correlati