2010-01-14 27 views

Respuesta

17

código fuente Firebug proporciona un archivo para hacer esto:

Ver firebugx.js

No reinventar la rueda cada día :)

+0

Realmente es una buena solución, especialmente si usa las otras funciones como 'advertir' y' error'. –

+3

Error de enlace para mí. Creo que esto es lo mismo: http://code.google.com/p/fbug/source/browse/branches/firebug1.5/lite/firebugx.js –

+0

Gracias Matthew, he corregido el enlace, incluso si no es la última versión del archivo (que no puedo encontrar en ningún lugar en el repositorio svn de firebug) – OcuS

2

No creo que sea mucho mejor que la solución a la que se vincula. Por supuesto, es posible fusionarlo a simplemente definir console.log() y dejar de descansar, pero en esencia, no se podrá evitar una construcción como esta.

La única alternativa que me viene a la mente es verificar console.log cada vez que lo llames, y eso es aún más engorroso.

3

La solución vinculado es básicamente una variante (con algunas funciones extra) del presente:

EDITAR El código siguiente no funciona realmente cuando Firefox está presente. Eso les enseñará por publicar código sin comprobar sólo para mostrar mi no tan operador || 1337 Skillz:

window.console = window.console || {}; 
console.log = function(){}; 

La razón de esto es que la consola de Firefox es en realidad un captador única property fuera de la ventana. Por lo tanto, no podemos establecerlo. En su lugar, algo como esto necesita ser utilizado:

if (!window.console) { 
    window.console = {}; 
    window.console.log = function(){}; 
} 

Además, console.log (y console.warn, console.error) funcionará en los navegadores WebKit, incluyendo Safari móvil, bastante bien, ¿eh?

+0

que también produce el error "la consola no está definida" – hoju

+0

Por supuesto que sí, gracias. Editaré el código. –

-1

De la parte superior de mi cabeza:

if(!console) 
{ 
    console = {}; 
    console.log = function() { }; 
} 
+1

que también produce el error "la consola no está definida" – hoju

2

Honestamente, me gustaría usar eso. No solo cubre console.log(), sino también cualquier otro método console, y en un número decentemente corto de líneas. El hecho de que se usó por primera vez en el reproductor de medios de Yahoo parece sugerir que también funciona de forma excelente entre navegadores.

Ese pedacito de código es su mejor apuesta, de hecho es decentemente elegante, y debería funcionar en la mayoría de los casos. Siempre y cuando usted comente sobre el fragmento para qué es (para no confundir a futuros desarrolladores), debería estar bien.

0

Mi solución final:

if(!("console" in window)) 
    window.console = {log: function() {}}; 
1

La solución de @OcuS es la mejor, pero puedes mejorarla con la mía: C diablos de esta manera para iniciar sesión en la consola FF: Log to Firefox Error Console from JavaScript

A continuación, agregue al firebugx.js esto 3 líneas dentro SI:

window.console['error'] = li 
window.console['warn'] = li 
window.console['debug'] = li 

por lo que verá el registro de cada consola error, advierten y depuración incluso cuando el Firebug está cerrado

4

siempre Creo mi cruzada envolturas navegador para funciones por igual console.log y se ve así:

function log(a){ 
try{ 
    console.log(a); 
    }catch(er){ 
    try{ 
    window.opera.postError(a); 
    }catch(er){ 
    //no console avaliable. put 
    //alert(a) here or write to a document node or just ignore 
    } 
    } 

} 

se pueden extenderse para cualquier navegador. en IE cuando en la depuración yo recomiendo poner el código jQuery en la última trampa:

$('body').append('<pre>'+JSON.serialize(a)+'</pre>'); 

Debe añadir JSON.serialize a su script. IE no tenerlo (IE8 podría tener, no estoy seguro)

1

Puede utilizar este código para comprobar si existe algún objeto consola

if('console' in window && 'log' in window.console) 
{ 
    // code using console.log here 
} 

O este código

if(typeof window.console != 'undefined' 
&& typeof window.console.log != 'undefined') 
{ 
    // code using console.log here 
} 

también puede leer esta publicación http://alexandershapovalov.com/firebug-console-is-not-defined-60/ Dentro del enlace de la publicación cómo crear el envoltorio jQuery para la consola

Cuestiones relacionadas