控制台登录谷歌浏览器

时间:2011-06-24 08:34:45

标签: google-chrome google-chrome-devtools

我正在编写一个Google Chrome扩展程序,并尝试从40年前编写的编码转换为HTML,CSS和Javascript编码。这是一个很大的学习曲线,但一点点控制台记录会有很大帮助。 (谁还记得旧铁芯内存Sperry Univacs上的绿色荧光粉显示屏?现在有一个控制台可以告诉你发生了什么 - 安装磁带,更换磁盘包或在打印机中放入更多纸张。)但我离题了。

就在几天前,我能够从我的内容脚本或背景页面向Google Chrome DOM Inspector控制台日志发送消息,如下所示:

console.log =“收到来自内容脚本PEEK.JS的请求”;

稍后如果我检查了注入该代码的页面,我会在控制台上看到完全相同的消息。如果该行执行了四次,我会在控制台上按顺序看到该消息的四个实例。这很简单但很漂亮。

现在,除非我输入“console.log”,否则控制台上不会显示任何内容,在这种情况下,我只看到消息的最后一个实例。这有什么问题?我在调试器中切换了一些东西吗?我写的代码错了吗?应该是:“console.log(”在这里留言“);” - (这总是会返回错误)?

我花了几个小时试图找到这个问题的答案,我只能猜测问题是如此简单,即使受过良好教育的孩子也能回答这个问题。另一种方法是花费更多时间尝试通过暗示或警报消息查找我的错误。最好花些时间学习如何有效地使用检查器进行调试。

例如,昨天重组曾经工作过的代码,以便它将数组传递给背景而不是后台从内容连续请求每个项目后,扩展中断,正如可能预期的那样。控制台显示一条错误消息:“选项卡executeScript期间出错:未知错误”。在同一行的最右边有一个“chrome / ExtensionProcessBindings:95”的链接。显然错误信息几乎没用。单击该链接将我带到资源面板,该面板在右侧显示一个空白框,其中包含“background.html”字样。这似乎也没用。

这些信息对我们有帮助吗?我花了六个小时才发现我已经将变量定义移动到代码中的另一个位置,以便在执行executeScript行时没有定义它。如果错误消息说在executeScript中未定义参数,我可以在大约十分钟内找到它。

回到最初的问题 - 我想要一个简单的答案 - 不要告诉我写一个功能。我看到控制台在两天前显示了我想要的内容而没有编写任何功能。

2 个答案:

答案 0 :(得分:3)

以下是您的简单答案:而不是

console.log="RECEIVED REQUEST FROM CONTENT SCRIPT PEEK.JS";

你应该使用

console.log("RECEIVED REQUEST FROM CONTENT SCRIPT PEEK.JS");

答案 1 :(得分:0)

  • console.log()

    https://developer.mozilla.org/en-US/docs/Web/API/console.log

    我建议在Mozilla开发者网络上搜索有关JavaScript和许多浏览器技术的文档。

  • 我对帮助输入错误或输出范围变量的一般建议是使用严格的javascript:

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode

    这使得某些JavaScript习语成为先前检测到的错误,并且提供了更有用的诊断。 (快速版本是将单行"use strict";放在js文件的顶部,或者如果这会导致许多问题,您可以将其作为任何函数内的第一行来执行逐个函数的迁移。 )

  • console.log = blah在某些情况下在控制台上显示blah的原因是,在JS中,<left side> = <right side expression>是一个表达式,其求值与{{{1}相同。 1}},但它也有分配给<right side expression>的副作用。 (这类似于C赋值表达式。)

    然后,在您进入的上下文中,控制台将显示任何表达式评估的结果。这与显式调用<left side>不同,后者将显示参数作为该函数的预期副作用。

    因此,在这种情况下,您使用字符串覆盖标准console.log()函数,整个表达式求值为该字符串值,以及控制台的内置行为( {{1函数!)将显示评估结果。

    在JS中,大多数东西都是可变的,你可以覆盖所有类型的字段和变量,所以要注意这个潜在的问题!

此外,有关在网上寻求帮助的一般建议:

对于像StackOverflow这样的网站,要将帖子限制为一个非常具体的单个问题。这是因为有类似问题的人会根据网络搜索或其他链接来到这里,他们需要弄清楚这个页面是否可以帮助他们快速解决他们的特定问题。如果他们必须阅读带有多个问题或轶事的段落,这确实会减慢它们的速度。我猜这就是为什么这个问题被低估了。

如果您有多个问题,请分别发帖。 StackOverflow不是一个关于过去体验轶事的好网站。 FWIW-我个人发现你作为70年代时代机器程序员的背景很有趣,但许多读者可能会迷失在细节中。这些轶事可以成为一篇好文章。