ฉันมีปัญหามากมายกับนักพัฒนาที่กำลังตรวจสอบในคอนโซลของพวกเขา () คำสั่ง และฉันไม่ชอบการดีบัก Internet Explorer แม้จะมีการปรับปรุงที่ยอดเยี่ยมของInternet Explorer 10และVisual Studio 2012ฯลฯ
ดังนั้นฉันจึงแทนที่วัตถุคอนโซลเอง ... ฉันได้เพิ่มค่าสถานะ __localhost ที่อนุญาตเฉพาะคำสั่งคอนโซลเมื่ออยู่ใน localhost ฉันยังเพิ่ม console. () ฟังก์ชั่นใน Internet Explorer (ที่แสดงการแจ้งเตือน () แทน)
// 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));
}
}
};
})();
ตัวอย่างการใช้:
console.log("hello");
Chrome / Firefox:
prints hello in the console window.
Internet Explorer:
displays an alert with 'hello'.
สำหรับผู้ที่ดูรหัสอย่างใกล้ชิดคุณจะค้นพบฟังก์ชัน console.examine () ฉันสร้างขึ้นเมื่อหลายปีก่อนเพื่อที่จะได้ใส่รหัสดีบั๊กในบางพื้นที่รอบ ๆ ผลิตภัณฑ์เพื่อช่วยแก้ไขปัญหาQA / ลูกค้า ตัวอย่างเช่นฉันจะออกจากบรรทัดต่อไปนี้ในบางรหัสที่ออก:
function doSomething(arg1) {
// ...
console.examine("someLabel", arg1);
// ...
}
และจากผลิตภัณฑ์ที่วางจำหน่ายให้พิมพ์ดังต่อไปนี้ในคอนโซล (หรือแถบที่อยู่นำหน้าด้วย 'javascript:'):
top.__examine_someLabel = true;
จากนั้นฉันจะเห็นคำสั่ง console.examine () ที่บันทึกไว้ทั้งหมด มันเป็นความช่วยเหลือที่ยอดเยี่ยมหลายต่อหลายครั้ง
console.log()
มันยอดเยี่ยมสำหรับการดีบัก js ... ฉันมักจะลืมใช้ในทางปฏิบัติ