383 votes

'console' est une erreur non définie pour Internet Explorer

J'utilise Firebug et j'ai des déclarations comme:

 console.log("...");
 

dans ma page. Dans IE8 (probablement aussi des versions antérieures), j'obtiens des erreurs de script en disant que 'console' n'est pas défini. J'ai essayé de mettre ceci en haut de ma page:

 <script type="text/javascript">
    if (!console) console = {log: function() {}};
</script>
 

j'ai toujours les erreurs. Un moyen de se débarrasser des erreurs?

378voto

KennyTM Points 232647

Essayer

 if (!window.console) console = ...
 

Une variable indéfinie ne peut pas être référencée directement. Cependant, toutes les variables globales sont des attributs du même nom du contexte global ( window dans le cas des navigateurs), et l'accès à un attribut indéfini est correct.

73voto

Tim Down Points 124501

Une autre alternative est l'opérateur typeof :

 if (typeof console == "undefined") {
    this.console = {log: function() {}};
}
 

Une autre alternative consiste à utiliser une bibliothèque de journalisation, telle que mon propre fichier log4javascript .

47voto

Vinícius Moraes Points 1867

Pour une solution plus robuste, utilisez ce code (tiré du code source de Twitter):

 // Avoid `console` errors in browsers that lack a console.
(function() {
    var method;
    var noop = function () {};
    var methods = [
        'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
        'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
        'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
        'timeStamp', 'trace', 'warn'
    ];
    var length = methods.length;
    var console = (window.console = window.console || {});

    while (length--) {
        method = methods[length];

        // Only stub undefined methods.
        if (!console[method]) {
            console[method] = noop;
        }
    }
}());
 

13voto

iblamefish Points 1467

Dans mes scripts, j'utilise soit la sténographie:

 window.console && console.log(...) // only log if the function exists
 

ou, s'il n'est pas possible ou faisable d'éditer chaque ligne de console.log, je crée une fausse console:

 // check to see if console exists. If not, create an empty object for it,
// then create and empty logging function which does nothing. 
//
// REMEMBER: put this before any other console.log calls
!window.console && (window.console = {} && window.console.log = function () {});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X