如何在 Google Chrome JavaScript 控制台中打印调试消息?

IT技术 javascript console debugging google-chrome
2021-02-22 03:32:17

如何在 Google Chrome JavaScript 控制台中打印调试消息?

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

6个回答

从浏览器地址栏执行以下代码:

javascript: console.log(2);

成功地将消息打印到 Google Chrome 中的“JavaScript 控制台”。

刚刚意识到,console.log()对于 js 调试来说很棒......我经常忘记在实践中使用它。
2021-05-10 03:32:17
@dbrin 这对于开发来说很好,但是console.log()在部署之前应该从生产代码中删除任何代码。
2021-05-10 03:32:17
这些“输出”之一可以持续多久?顺便点赞,这真的很有帮助
2021-05-11 03:32:17
@SebasConsole.Log应该在部署之前从生产代码中删除,因为如果没有,这些消息将记录到您用户的 JavaScript 控制台。虽然他们不太可能看到它,但它正在占用他们设备上的内存空间。此外,根据日志的内容,您可能会告诉人们如何破解/逆向工程您的应用程序。
2021-05-13 03:32:17

改进 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(...);

这些函数将记录不同类型的项目(可以根据日志、信息、错误或警告进行过滤),并且在控制台不可用时不会导致错误。这些函数将在 Firebug 和 Chrome 控制台中工作。

不,b/c 只拥有 window.console 并不能保证您将拥有 window.console.log 或 .warn &c
2021-04-22 03:32:17
我对此有补充,请参阅下面的答案
2021-04-24 03:32:17
请小心,因为如果此脚本与页面一起加载并且控制台窗口未打开,它将创建“虚拟”控制台,如果您在页面加载打开控制台,它会阻止真正的控制台工作(至少在旧版本的 firefox/firebug 和 chrome 中是这种情况)
2021-04-30 03:32:17
感谢那。如果您运行一次“if”,if (!window.console) {然后将所有内容放在括号内,代码会不会更紧现在你正在评估同样的东西四次。
2021-05-01 03:32:17
不,这不会使 chrome 因类型错误而中止。上面链接的问题是关于用this调用的上面的代码不会这样做,并且在 Chrome 中可以正常工作
2021-05-08 03:32:17

只需添加一个很多开发人员都错过的很酷的功能:

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

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

这也很酷:

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

这为new Error()调用点提供了类似于 Java 的堆栈跟踪(包括文件路径和行号!)。

双方%onew Error().stack在Chrome和Firefox提供!

同样对于 Firefox 中的堆栈跟踪使用:

console.trace();

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

快乐黑客!

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

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

请参阅堆栈溢出问题恢复 console.log()

我刚刚发现的另一个:console.dir developer.mozilla.org/en-US/docs/Web/API/console.dir
2021-04-20 03:32:17

只是一个简短的警告 - 如果您想在 Internet Explorer 中进行测试而不删除所有 console.log(),则需要使用Firebug Lite否则您会遇到一些不太友好的错误。

(或者创建你自己的 console.log() 它只返回 false。)

我避免了这样的跨浏览器错误: if (console) console.log()
2021-05-04 03:32:17
如果您在 IE (F12) 中打开开发人员工具,则该console对象将被创建并存在,直到您关闭该浏览器实例。
2021-05-05 03:32:17

这是一个简短的脚本,用于检查控制台是否可用。如果不是,它会尝试加载Firebug,如果 Firebug 不可用,它会加载 Firebug Lite。现在您可以console.log在任何浏览器中使用享受!

if (!window['console']) {

    // Enable console
    if (window['loadFirebugConsole']) {
        window.loadFirebugConsole();
    }
    else {
        // No console, use Firebug Lite
        var firebugLite = function(F, i, r, e, b, u, g, L, I, T, E) {
            if (F.getElementById(b))
                return;
            E = F[i+'NS']&&F.documentElement.namespaceURI;
            E = E ? F[i + 'NS'](E, 'script') : F[i]('script');
            E[r]('id', b);
            E[r]('src', I + g + T);
            E[r](b, u);
            (F[e]('head')[0] || F[e]('body')[0]).appendChild(E);
            E = new Image;
            E[r]('src', I + L);
        };
        firebugLite(
            document, 'createElement', 'setAttribute', 'getElementsByTagName',
            'FirebugLite', '4', 'firebug-lite.js',
            'releases/lite/latest/skin/xp/sprite.png',
            'https://getfirebug.com/', '#startOpened');
    }
}
else {
    // Console is already available, no action needed.
}