Ich hatte viele Probleme mit Entwicklern, die ihre Konsolen. () -Anweisungen eincheckten. Und ich mag es wirklich nicht, Internet Explorer zu debuggen, trotz der fantastischen Verbesserungen von Internet Explorer 10 und Visual Studio 2012 usw.
Also habe ich das Konsolenobjekt selbst überschrieben ... Ich habe ein __localhost-Flag hinzugefügt, das Konsolenanweisungen nur auf localhost zulässt. Ich habe auch Internet Explorer () -Funktionen zum Internet Explorer hinzugefügt (der stattdessen eine Warnung () anzeigt).
// 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));
}
}
};
})();
Anwendungsbeispiel:
console.log("hello");
Chrome / Firefox:
prints hello in the console window.
Internet Explorer:
displays an alert with 'hello'.
Für diejenigen, die sich den Code genau ansehen, finden Sie die Funktion console.examine (). Ich habe dies vor Jahren erstellt, damit ich in bestimmten Bereichen des Produkts Debug-Code hinterlassen kann, um Probleme mit der Qualitätssicherung / dem Kunden zu beheben. Zum Beispiel würde ich die folgende Zeile in einem veröffentlichten Code belassen:
function doSomething(arg1) {
// ...
console.examine("someLabel", arg1);
// ...
}
Geben Sie dann vom freigegebenen Produkt Folgendes in die Konsole ein (oder in die Adressleiste mit dem Präfix "Javascript:"):
top.__examine_someLabel = true;
Dann werden alle protokollierten Anweisungen von console.examine () angezeigt. Es war schon oft eine fantastische Hilfe.
console.log()
ist großartig für das Debuggen von JS ... Ich vergesse oft, es in der Praxis zu verwenden.