Ho avuto molti problemi con gli sviluppatori che hanno verificato le loro consolle. () Dichiarazioni. E davvero non mi piace il debug di Internet Explorer, nonostante i fantastici miglioramenti di Internet Explorer 10 e Visual Studio 2012 , ecc.
Quindi, ho ignorato l'oggetto console stesso ... Ho aggiunto un flag __localhost che consente le istruzioni console solo su localhost. Ho anche aggiunto le funzioni console. () A Internet Explorer (che visualizza invece un avviso ()).
// 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));
}
}
};
})();
Esempio di utilizzo:
console.log("hello");
Chrome / Firefox:
prints hello in the console window.
Internet Explorer:
displays an alert with 'hello'.
Per coloro che osservano attentamente il codice, scoprirai la funzione console.examine (). Ho creato questi anni fa in modo da poter lasciare il codice di debug in alcune aree intorno al prodotto per aiutare a risolvere i problemi di QA / clienti. Ad esempio, lascerei la seguente riga in un codice rilasciato:
function doSomething(arg1) {
// ...
console.examine("someLabel", arg1);
// ...
}
E quindi dal prodotto rilasciato, digitare quanto segue nella console (o barra degli indirizzi con il prefisso 'javascript:'):
top.__examine_someLabel = true;
Quindi, vedrò tutte le istruzioni console.examine () registrate. È stato un grande aiuto molte volte.
console.log()
è fantastico per il debug di js ... Mi dimentico spesso di usarlo in pratica.