【问题标题】:How to hide source of Log messages in Console?如何在控制台中隐藏日志消息的来源?
【发布时间】:2016-04-18 04:42:35
【问题描述】:

将消息输出到控制台时,也会显示源(在 Chrome 开发者工具中位于右侧):

console.log("Foo");                         //Source
Foo                               test.js:1 //Output

但是,在某些网站上,消息显示没有显示来源,例如Facebook

查看Chrome Console API Reference,有大量不同输出的示例,但所有示例都显示了源代码。

如何隐藏控制台输出的来源(.js 页和行号)?


编辑:为了澄清起见,这不是 How does Facebook disable the browser's integrated Developer Tools? 的重复,因为该问题回答了控制台如何禁用标准用户输入(其答案解释了它的工作原理)。我特别问的是不显示源文件和行的美感。

【问题讨论】:

  • 出于兴趣,您在哪个 URL 上看到了您在图像中显示的控制台输出?当我在 Chrome 中访问 facebook.com 时,我没有看到这一点。
  • 您必须先登录才能看到该消息。

标签: javascript jquery


【解决方案1】:

对于那些仍在寻找这个的人,你可以使用类似的东西

function consoleWithNoSource(...params) {
  setTimeout(console.log.bind(console, ...params));
}

consoleWithNoSource("Helloo....!")

【讨论】:

    【解决方案2】:

    他们正在使用setTimeout 与源分离:

    setTimeout(console.log.bind(console, '\n%c' + s[0], s[1]));
    

    【讨论】:

    • s[0]s[1] 参考什么?消息和 CSS 样式,我猜?
    • @OliverSalzburg 非常感谢。它工作得很好。但我很难理解它是如何工作的。你能解释一下它是如何工作的吗?
    • @NirojShrestha 可以这样想:您正在传递setTimeout 一个函数,它应该稍后执行。因此,它将传递给它的函数放置在内存某处的虚拟空间中,并且丢失了它来自何处的信息。到时候,它会执行那个没有行的函数,因为它只是驻留在内存中的某个地方。至少这是我对事情的看法,我对代码是如何在内部执行的并没有深入的了解。
    • @DerHochstapler 但为什么setTimeout(() => console.log('hello world')); 显示跟踪?
    • @legend80s 因为胖箭头函数不同
    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多