J'ai eu beaucoup de problèmes avec les développeurs qui archivaient leurs instructions console. (). Et, je n'aime vraiment pas le débogage d'Internet Explorer, malgré les améliorations fantastiques d' Internet Explorer 10 et de Visual Studio 2012 , etc.
J'ai donc remplacé l'objet console lui-même ... J'ai ajouté un indicateur __localhost qui n'autorise les instructions de console que sur localhost. J'ai également ajouté des fonctions console. () À Internet Explorer (qui affiche une alerte () à la place).
// Console extensions...
(function() {
var __localhost = (document.location.host === "localhost"),
__allow_examine = true;
if (!console) {
console = {};
}
console.__log = console.log;
console.log = function() {
if (__localhost) {
if (typeof console !== "undefined" && typeof console.__log === "function") {
console.__log(arguments);
} else {
var i, msg = "";
for (i = 0; i < arguments.length; ++i) {
msg += arguments[i] + "\r\n";
}
alert(msg);
}
}
};
console.__info = console.info;
console.info = function() {
if (__localhost) {
if (typeof console !== "undefined" && typeof console.__info === "function") {
console.__info(arguments);
} else {
var i, msg = "";
for (i = 0; i < arguments.length; ++i) {
msg += arguments[i] + "\r\n";
}
alert(msg);
}
}
};
console.__warn = console.warn;
console.warn = function() {
if (__localhost) {
if (typeof console !== "undefined" && typeof console.__warn === "function") {
console.__warn(arguments);
} else {
var i, msg = "";
for (i = 0; i < arguments.length; ++i) {
msg += arguments[i] + "\r\n";
}
alert(msg);
}
}
};
console.__error = console.error;
console.error = function() {
if (__localhost) {
if (typeof console !== "undefined" && typeof console.__error === "function") {
console.__error(arguments);
} else {
var i, msg = "";
for (i = 0; i < arguments.length; ++i) {
msg += arguments[i] + "\r\n";
}
alert(msg);
}
}
};
console.__group = console.group;
console.group = function() {
if (__localhost) {
if (typeof console !== "undefined" && typeof console.__group === "function") {
console.__group(arguments);
} else {
var i, msg = "";
for (i = 0; i < arguments.length; ++i) {
msg += arguments[i] + "\r\n";
}
alert("group:\r\n" + msg + "{");
}
}
};
console.__groupEnd = console.groupEnd;
console.groupEnd = function() {
if (__localhost) {
if (typeof console !== "undefined" && typeof console.__groupEnd === "function") {
console.__groupEnd(arguments);
} else {
var i, msg = "";
for (i = 0; i < arguments.length; ++i) {
msg += arguments[i] + "\r\n";
}
alert(msg + "\r\n}");
}
}
};
/// <summary>
/// Clever way to leave hundreds of debug output messages in the code,
/// but not see _everything_ when you only want to see _some_ of the
/// debugging messages.
/// </summary>
/// <remarks>
/// To enable __examine_() statements for sections/groups of code, type the
/// following in your browser's console:
/// top.__examine_ABC = true;
/// This will enable only the console.examine("ABC", ... ) statements
/// in the code.
/// </remarks>
console.examine = function() {
if (!__allow_examine) {
return;
}
if (arguments.length > 0) {
var obj = top["__examine_" + arguments[0]];
if (obj && obj === true) {
console.log(arguments.splice(0, 1));
}
}
};
})();
Exemple d'utilisation:
console.log("hello");
Chrome / Firefox:
prints hello in the console window.
Internet Explorer:
displays an alert with 'hello'.
Pour ceux qui regardent attentivement le code, vous découvrirez la fonction console.examine (). J'ai créé cela il y a quelques années afin de pouvoir laisser le code de débogage dans certaines zones autour du produit pour aider à résoudre les problèmes d' assurance qualité / client. Par exemple, je laisserais la ligne suivante dans du code publié:
function doSomething(arg1) {
// ...
console.examine("someLabel", arg1);
// ...
}
Et puis, à partir du produit commercialisé, tapez ce qui suit dans la console (ou la barre d'adresse préfixée par 'javascript:'):
top.__examine_someLabel = true;
Ensuite, je verrai toutes les instructions consignées console.examine (). Cela a été une aide fantastique à plusieurs reprises.
console.log()
c'est génial pour le débogage js ... J'oublie souvent de l'utiliser en pratique.