2009-09-11 11 views
5

Estoy trabajando en un nuevo proyecto que tiene algunos javascript complejos. No puedo publicar ningún código, de eso no se trata mi pregunta.¿Se puede requerir que Firebug ejecute mi sitio web?

Tengo un script que funciona en Firefox 3.0. Se señaló que el script no funcionaba en Firefox 3.5, así que estoy tratando de hacerlo funcionar. De hecho, el script no produjo los resultados esperados, por lo que instalé la última versión de Firebug, habilité el console y actualicé la página.

Y vaya, funcionó.

Sin errores, advertencias nada.

Así que he deshabilitado la consola, y luego no funcionó más ...

lo que está pasando aquí? La consola Firebug de alguna manera cambia algo en Firefox que hace que mi script funcione? ¿Algún consejo sobre qué sigue? (además de pedir a los visitantes futuros que instalen Firebug ...)

Respuesta

10

¿Podría ser algo tan simple como olvidarse de comentar una llamada al console.log() en algún lugar de su javascript?

Si tiene referencias suspendidas y el usuario no tiene Firebug instalado, obtendrá un error de tiempo de ejecución que detendrá la ejecución del script.

+2

+1 Este parece ser el culpable más probable – patros

+0

Sí, esto parece muy probable también. Pensé en ello por un segundo, pero asumí que como no tenías instalado Firebug al principio no estaría allí, pero después de leer esta respuesta, me di cuenta de que hay una buena posibilidad de que si copiabas y pegabas código, alguna depuración estuviera allí. +1 – NateDSaint

+0

No sé, tengo que dar el beneficio de la duda al desarrollador para que pueda reconocer un error tan obvio. – Zoidberg

7

Me parece que hay una posibilidad de que tenga un problema de subprocesamiento, y FireBug está analizando y posiblemente ralentizando uno de los subprocesos para que tenga tiempo de completar antes de que se resuelva el siguiente paso.

¿Está utilizando posiblemente ajax, y hay algo esperando por esa respuesta? ¿O posiblemente estás haciendo algo en o después de la carga de un objeto que depende de otra cosa en el DOM?

ACTUALIZACIÓN: Para aquellos que tropiezan con esto ahora, los "hilos" en JavaScript realmente solo existen en abstracción (trabajadores web, etc.). Mal uso del término. Realmente estaba pensando en una acción asíncrona que regresó antes de que otra estuviera lista.

+0

Esto tendría sentido desde el motor JavaScript de Firefox parece llegar más rápido con cada lanzamiento. – Zoidberg

+0

No sé si es correcto, pero +1 para el buen análisis – marcgg

+0

Estoy usando ajax Sí, creo que Justin tiene razón sobre console.log() :) – Ropstah

6

Ingrese su código para console.log(), console.debug(). Llamar a los métodos de window.console objects arroja un error si la consola no está definida (como se esperaba).

En la mayoría de los casos, puede eliminar o comentar fácilmente esas líneas.

+0

¡Gracias! Primero respondiste, así que el crédito es tuyo :) – Ropstah

+0

@ropstah No es que sea importante ... pero revisa tus cálculos. Esta es la última respuesta, no la primera. –

+0

Whoops, tienes razón, de hecho estaba bajo influencia mientras leía "hace 8 minutos" por Mushex y tu "hace 9 minutos" Justin ... :) – Ropstah

0

Escribí un envoltorio simple para firebug (solo uso la depuración pero debería darle lo que necesita para duplicar los otros métodos) que solo se escribe cuando la consola está allí para poder usar Firebug, no es necesario ir comente mis declaraciones de depuración y no rompa sitios para personas sin él.

Si utiliza este código a continuación, utilizar fbconsole.debug en lugar de console.debug que nunca tendrá este problema:

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

Bueno, pero creo que es mejor que elimines las instrucciones de depuración antes de que todo salga en marcha :) – Ropstah

Cuestiones relacionadas