2010-01-14 2 views

Répondre

17

code source Firebug fournit un fichier à faire:

Voir firebugx.js

Ne pas réinventer la roue tous les jours :)

+0

C'est en fait une très bonne solution, surtout si vous utilisez les autres fonctions comme "warn" et "erreur". –

+3

Le lien a échoué pour moi. Je pense que c'est pareil: http://code.google.com/p/fbug/source/browse/branches/firebug1.5/lite/firebugx.js –

+0

Merci Matthew, j'ai corrigé le lien même si ce n'est pas la dernière version du fichier (que je ne trouve nulle part dans le dépôt svn de firebug) – OcuS

2

Je ne pense pas qu'il obtient beaucoup mieux que la solution de contournement que vous lien. Il est bien sûr possible de le fondre simplement en définissant console.log() et de laisser le repos, mais en substance, vous ne contournerez pas une construction comme celle-ci.

seule alternative qui vient à l'esprit est la vérification pour console.log chaque fois que vous l'appelez, et qui est encore plus lourd.

3

La solution est liée essentiellement une variante (avec quelques fonctions supplémentaires) de cette:

EDIT Le code ci-dessous ne fonctionne pas réellement quand Firefox est présent. Ça va enseigner le code pour l'affichage sans vérifier juste pour montrer mon pas 1337 opérateur || skillz:

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

La raison est que la console Firefox est en fait un getter seulement property hors fenêtre. Par conséquent, nous ne pouvons pas le définir. Au lieu de cela, quelque chose comme cela doit être utilisé:

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

En outre, console.log (et console.warn, console.error) travaillera sur les navigateurs Webkit, y compris Safari mobile, assez cool, hein?

+0

qui génère également l'erreur «console is not defined» – hoju

+0

De couse c'est le cas, merci. Je vais éditer le code. –

-1

Du haut de ma tête:

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

qui produit également l'erreur "console n'est pas définie" – hoju

2

Honnêtement, j'utiliser. Il couvre non seulement console.log(), mais aussi toutes les autres méthodes , et dans un nombre décent de lignes. Le fait qu'il a été utilisé pour la première fois dans le lecteur multimédia de Yahoo semble suggérer qu'il fonctionne aussi très bien avec les navigateurs croisés.

Ce morceau de code est votre meilleur pari, est en fait décemment élégante et devrait fonctionner dans la plupart tous les cas. Tant que vous commentez au-dessus de l'extrait juste ce qu'il est pour (afin de ne pas confondre les futurs développeurs), vous devriez aller bien.

0

Ma solution finale:

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

La solution de @OcuS est sûr le meilleur, mais vous pouvez l'améliorer avec le mien: C Heck cette façon de se connecter à FF Console: Log to Firefox Error Console from JavaScript

ajouter ensuite à la firebugx.js ces 3 lignes à l'intérieur IF:

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

Vous verrez le journal de chaque console erreur, et mettent en garde débogage même lorsque le Firebug est fermé

4

Je crée toujours mon cross wrappers de navigateur pour console.log semblables fonctions et il ressemble à ceci:

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 
    } 
    } 

} 

Il peut être étendu pour tous les navigateurs. dans IE quand en debug je recommande de mettre ce code jquery dans la dernière prise:

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

Vous devez ajouter JSON.serialize à votre script. IE ne pas l'avoir (IE8 pourrait avoir, je ne suis pas sûr)

1

Vous pouvez utiliser ce code pour vérifier si l'objet de la console existe

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

Ou ce code

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

également vous pouvez lire ce post http://alexandershapovalov.com/firebug-console-is-not-defined-60/ À l'intérieur du lien de publication comment créer un wrapper jQuery pour la console

Questions connexes