我如何打印调试消息在谷歌Chrome JavaScript控制台?
请注意,JavaScript控制台和JavaScript调试器是不一样的;它们有不同的语法AFAIK,所以在JavaScript调试器中的打印命令在这里将不起作用。在JavaScript控制台中,print()会将参数发送给打印机。
我如何打印调试消息在谷歌Chrome JavaScript控制台?
请注意,JavaScript控制台和JavaScript调试器是不一样的;它们有不同的语法AFAIK,所以在JavaScript调试器中的打印命令在这里将不起作用。在JavaScript控制台中,print()会将参数发送给打印机。
当前回答
我个人使用这个,它类似于tarek11011的:
// Use a less-common namespace than just 'log'
function myLog(msg)
{
// Attempt to send a message to the console
try
{
console.log(msg);
}
// Fail gracefully if it does not exist
catch(e){}
}
主要的一点是,至少有一些日志记录的实践,而不仅仅是将console.log()直接插入到JavaScript代码中,这是一个好主意,因为如果您忘记了它,而它位于生产站点上,它可能会破坏该页面的所有JavaScript代码。
其他回答
或者使用这个函数:
function log(message){
if (typeof console == "object") {
console.log(message);
}
}
你可以使用console.log()如果你在什么编程软件编辑器中有一个调试代码,你会看到输出很可能是我最好的编辑器(谷歌Chrome)。只需按F12,然后按控制台选项卡。您将看到结果。快乐的编码。:)
这是我的控制台包装类。它还提供了范围输出,使工作更简单。注意使用localConsole.debug.call(),以便localConsole.debug在调用类的范围内运行,提供对其toString方法的访问。
localConsole = {
info: function(caller, msg, args) {
if ( window.console && window.console.info ) {
var params = [(this.className) ? this.className : this.toString() + '.' + caller + '(), ' + msg];
if (args) {
params = params.concat(args);
}
console.info.apply(console, params);
}
},
debug: function(caller, msg, args) {
if ( window.console && window.console.debug ) {
var params = [(this.className) ? this.className : this.toString() + '.' + caller + '(), ' + msg];
if (args) {
params = params.concat(args);
}
console.debug.apply(console, params);
}
}
};
someClass = {
toString: function(){
return 'In scope of someClass';
},
someFunc: function() {
myObj = {
dr: 'zeus',
cat: 'hat'
};
localConsole.debug.call(this, 'someFunc', 'myObj: ', myObj);
}
};
someClass.someFunc();
在Firebug中输出如下:
In scope of someClass.someFunc(), myObj: Object { dr="zeus", more...}
或铬:
In scope of someClass.someFunc(), obj:
Object
cat: "hat"
dr: "zeus"
__proto__: Object
从浏览器地址栏执行以下代码:
javascript: console.log(2);
成功打印消息到“JavaScript控制台”在谷歌Chrome浏览器。
我在开发人员检入他们的控制台.()语句时遇到了很多问题。而且,我真的不喜欢调试Internet Explorer,尽管Internet Explorer 10和Visual Studio 2012等有了惊人的改进。
因此,我已经重写了控制台对象本身…我添加了一个__localhost标志,它只允许在localhost上使用控制台语句。我还向Internet Explorer添加了console.()函数(而不是显示alert())。
// 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. inspect()函数。这是我在几年前创建的,这样我就可以在产品的某些区域留下调试代码,以帮助解决QA/客户问题。例如,我会在一些发布的代码中留下以下一行:
function doSomething(arg1) {
// ...
console.examine("someLabel", arg1);
// ...
}
然后从发布的产品中,在控制台(或地址栏前缀为'javascript:')中输入以下内容:
top.__examine_someLabel = true;
然后,我将看到所有已记录的console. inspect()语句。这已经帮了我很多次了。