Double Possible:
"console" n'est pas défini d'erreur d'internet explorerSi vous avez
console.log
des déclarations dans votre code, Internet Explorer va jeter une erreur JavaScript (au moins dans IE7 qui est ce que notre intranet utilisateurs ont installé).J'utilise Firefox pour la plupart de mes tests de développement, principalement en raison de la fonctionnalité fournie par Firebug (où j'ai utiliser beaucoup de console consolidés) mais j'ai aussi besoin de tester sous IE.
si j'ajoute ce qui suit à mon JavaScript, l'erreur ne peut pas être lancé.
var debugging = false; if (typeof console == "undefined") var console = { log: function() {} };
Le problème est que je voudrais le déclenchement d'un événement si le mode de débogage est faux. Si j'ai créer une fonction pour tester si le débogage est faux et faire une action (à ce point, juste une alerte), mais quand j'ai essayer de faire la suite, je reçois un IE message d'erreur indiquant que la Console n'est pas défini.
var debugging = false; // or true if (typeof console == "undefined") var console = { log: function() {consoleMsg()} }; function consoleMsg() { if(!debugging) { alert('Console.log event in Production Code'); }
Si quelqu'un pouvait m'aider à corriger mon code, de fournir une meilleure façon de m'aider à atteindre mon but, ou me diriger vers une ressource à edumacate moi-même, je serais très reconnaissante.
Réponses
Trop de publicités?Vous n'avez pas à passer par le biais de tous ces cercles. Il suffit de vérifier si la console existe avant de l'utiliser.
Ainsi, au lieu de:
console.log('foo');
Utilisation:
window.console && console.log('foo');
...et vous ne recevez aucun message d'erreur.
Alternativement, vous pouvez simplement rechercher en haut de votre script, et si c'est pas défini, il suffit de le remplir avec une fonction vide:
// At the top of your script:
if ( ! window.console ) console = { log: function(){} };
// If you use other console methods, add them to the object literal above
// Then, anywhere in your script:
console.log('This message will be logged, but will not cause an error in IE7');
Pour une solution plus robuste, utilisez ce morceau de code (pris sur le twitter du code source):
// 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;
}
}
}());
graphicdivine
Points
6414
Bhesh Gurung
Points
24875
Saxoier
Points
1096
(function(debug) {
var console;
function wrapConsoleMethod(fnName) {
if(fnName in console)
console[ fnName ] = function(fn) {
return function() {
if(debug)
return fn.apply(console, arguments);
else
alert('Console event in Production Code');
};
}(console[ fnName ]);
else
; // fn not in console
};
if(!('console' in window))
window.console = {
log : function() {}
// ...
};
console = window.console;
wrapConsoleMethod('log');
// ...
})(true /* debug */);
console.log('test');