我正在编写一个 Google Chrome 扩展程序,并试图从 40 年前的那种编码过渡到 HTML、CSS 和 Javascript 编码。这是一个很大的学习曲线,但一点控制台日志记录会很有帮助。(谁还记得旧的铁芯内存 Sperry Univacs 上的绿色荧光粉显示?现在有一个控制台可以告诉你发生了什么 - 安装磁带,更换磁盘包或在打印机中放入更多纸张。)但我离题了.
就在几天前,我能够从我的内容脚本或后台页面向 Google Chrome DOM Inspector 控制台日志发送消息,如下所示:
console.log="从内容脚本 PEEK.JS 收到请求";
稍后,如果我检查注入该代码的页面,我会在控制台上看到完全相同的消息。如果该行执行了四次,我会在控制台上依次看到该消息的四个实例。这很简单但很漂亮。
现在,除非我输入“console.log”,否则控制台上不会出现任何内容,在这种情况下,我只看到消息的最后一个实例。这里有什么问题?我是否在调试器中关闭了某些东西?我是不是写错了代码?应该是:"console.log("Message Here");" - (这总是返回错误)?
我花了好几个小时试图找到这个问题的答案,我只能推测这个问题非常简单,即使是受过良好教育的孩子也能回答。另一种方法是花更多时间尝试通过暗示或警报消息找到我的错误。最好花时间学习如何有效地使用检查器进行调试。
例如,昨天在重组曾经工作的代码以便它将数组从内容传递到后台而不是后台从内容连续请求每个项目之后,扩展中断,正如预期的那样。控制台显示一条错误消息:“选项卡执行脚本期间出错:未知错误。” 在同一行的最右侧带有一个链接,上面写着“chrome/ExtensionProcessBindings:95”。显然错误信息几乎没有用。单击该链接将我带到资源面板,该面板在右侧显示一个空白框,上面写着“background.html”这似乎也没用。
这些信息有什么帮助?我又花了六个小时才弄清楚我已经将变量定义移动到代码中的另一个位置,因此在执行 executeScript 行时它没有被定义。如果错误消息说在 executeScript 中未定义参数,我可以在大约十分钟内找到它。
所以回到最初的问题——我想要一个简单的答案——不要告诉我写一个函数。前两天看到控制台显示我想要的东西,没有写任何函数。