我如何打印调试消息在谷歌Chrome JavaScript控制台?

请注意,JavaScript控制台和JavaScript调试器是不一样的;它们有不同的语法AFAIK,所以在JavaScript调试器中的打印命令在这里将不起作用。在JavaScript控制台中,print()会将参数发送给打印机。


当前回答

改进Andru的想法,你可以写一个脚本来创建控制台函数,如果他们不存在:

if (!window.console) console = {};
console.log = console.log || function(){};
console.warn = console.warn || function(){};
console.error = console.error || function(){};
console.info = console.info || function(){};

然后,使用以下任何一种方法:

console.log(...);
console.error(...);
console.info(...);
console.warn(...);

这些函数将记录不同类型的项目(可以根据log, info, error或warn进行过滤),并且在控制台不可用时不会导致错误。这些功能将在Firebug和Chrome控制台中工作。

其他回答

或者使用这个函数:

function log(message){
    if (typeof console == "object") {
        console.log(message);
    }
}

我个人使用这个,它类似于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代码。

只需要添加一个许多开发者忽略的功能:

console.log("this is %o, event is %o, host is %s", this, e, location.host);

这是JavaScript对象的可点击和深度浏览内容的神奇%o转储。%s只是一个记录。

这个也很酷:

console.log("%s", new Error().stack);

它提供到新的Error()调用点的类似java的堆栈跟踪(包括文件路径和行号!)

%o和new Error()。堆栈可用在Chrome和Firefox!

在Firefox中也可以使用堆栈跟踪:

console.trace();

正如https://developer.mozilla.org/en-US/docs/Web/API/console所说。

黑客快乐!

更新:一些库是由坏人编写的,他们为了自己的目的重新定义了控制台对象。要在加载库后恢复原始的浏览器控制台,请使用:

delete console.log;
delete console.warn;
....

参见堆栈溢出问题恢复console.log()。

简单的Internet Explorer 7及以下,为其他浏览器保留行编号:

/* Console shim */
(function () {
    var f = function () {};
    if (!window.console) {
        window.console = {
            log:f, info:f, warn:f, debug:f, error:f
        };
    }
}());

尽管这个问题已经很老了,而且已经有了很好的答案,但是我想提供关于其他日志功能的更新。

你也可以打印组:

console.group("Main");
console.group("Feature 1");
console.log("Enabled:", true);
console.log("Public:", true);
console.groupEnd();
console.group("Feature 2");
console.log("Enabled:", false);
console.warn("Error: Requires auth");
console.groupEnd();

打印:

根据本页,所有主要浏览器都支持此功能: