Console for everybody

L'extension Firebug pour Firefox a révolutionné le développement en javascript, à tel point qu'on se demande aujourd'hui comment nos prédécesseurs ont pu faire sans lui. Le revers de la médaille, c'est qu'on peut oublier qu'il n'est pas toujours présent, y compris sous Firefox ; l'utilisation de la console pour débuguer peut donc parfois entrainer des… bugs. Karl Dubost signale une solution pour éviter pareille erreur. Voilà pour ma part la méthode que j'utilise depuis plusieurs années dans ma librairie javascript rnb :

/**
 * Traceur pour écrire des informations dans une console.
 * @param {String} msg Message à afficher dans le debugger
 * @param {String} [type=info] Type du message (info|warn|error)
 */
rnb.trace = (window.console) ?
    function (msg, type) {
        if (!type) { type = 'info'; }
        if (console[type]) { console[[type|msg]]; }
        else { console.log(msg); }
    } : (window.opera && window.opera.postError) ?
    function (msg, type) {
        window.opera.postError(msg);
    } :
    function (msg, type) {};
Définition d'une méthode pour écrire dans la console d'un navigateur.

L'objet console peut exister sous Firefox, Safari, Chrome et IE > 7; Opera possède l'objet postError aux fonctionnalités équivalentes ; si aucun outil de log n'est disponible, la fonctions ne fait rien. On peut donc laisser les traces dans le code une fois en production (même si ce n'est pas conseillé) : cela n'entrainera pas de plantage à cause de l'absence d'outil de debug.