मैं डेवलपर्स के साथ कई मुद्दों पर उनके कंसोल () कथनों में जाँच कर रहा हूँ। और, मैं वास्तव में इंटरनेट एक्सप्लोरर 10 और विज़ुअल स्टूडियो 2012 आदि के शानदार सुधारों के बावजूद, इंटरनेट एक्सप्लोरर को डीबग करना पसंद नहीं करता ।
इसलिए, मैंने कंसोल ऑब्जेक्ट को ओवरराइड कर दिया है ... मैंने एक __localhost ध्वज जोड़ा है जो केवल स्थानीय स्टेट्स पर कंसोल स्टेटमेंट की अनुमति देता है। मैंने कंसोल भी जोड़ा है। () इंटरनेट एक्सप्लोरर के लिए कार्य करता है (जो इसके बजाय अलर्ट प्रदर्शित करता है)।
// 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");
क्रोम / फ़ायरफ़ॉक्स:
prints hello in the console window.
इंटरनेट एक्स्प्लोरर:
displays an alert with 'hello'.
जो लोग कोड को करीब से देखते हैं, उनके लिए आप कंसोल.एक्सामाइन () फ़ंक्शन की खोज करेंगे। मैंने इसे सालों पहले बनाया था ताकि मैं क्यूए / ग्राहक मुद्दों के निवारण में मदद करने के लिए उत्पाद के आसपास के कुछ क्षेत्रों में डिबग कोड छोड़ सकूं । उदाहरण के लिए, मैं कुछ जारी किए गए कोड में निम्नलिखित पंक्ति छोड़ूंगा:
function doSomething(arg1) {
// ...
console.examine("someLabel", arg1);
// ...
}
और फिर जारी किए गए उत्पाद से, कंसोल में निम्नलिखित टाइप करें (या 'जावास्क्रिप्ट:' के साथ उपसर्ग किए गए एड्रेस बार))
top.__examine_someLabel = true;
फिर, मैं सभी लॉग इन कंसोल.एक्सामाइन () स्टेटमेंट देखूंगा। यह कई बार एक शानदार मदद रही है।
console.log()
जेएस डिबगिंग के लिए बहुत बढ़िया है ... मैं अक्सर इसे अभ्यास में उपयोग करना भूल जाता हूं।