【问题标题】:Chrome extension content script doesn't load and there's no errors. none. not even a little oneChrome 扩展内容脚本不会加载并且没有错误。没有任何。甚至没有一点
【发布时间】:2013-12-17 08:37:22
【问题描述】:

对于我来说,愚蠢地放错括号/大括号并导致整个内容脚本无法加载并不罕见。当这种情况发生时,任何地方都没有错误 - 控制台是空的。这发生在 content.js 直接 chrome 扩展和 crossrider 的 extension.js(也在 chrome 中)。知道结果后,我知道我的文件中某处有问题,但手动查找它只是一种愚蠢愚蠢的调试方式。我发现缩小问题范围的唯一方法是......

  1. 创建一个临时html文件,直接包含内容脚本,等待显示的甜蜜行号。

  2. 将文件上传到 crossrider 的 Web 界面,让其 JS 解析器显示错误所在的行。

上面的东西又慢又麻烦,需要用霰弹枪从棚子后面取出。

我在哪里可以让 chrome 告诉我 1. 内容脚本有问题 2. 哪一行甚至是哪种类型的括号我失踪了?

【问题讨论】:

  • 它不会直接回答您的问题(但仍然是一个很好的建议):使用支持 JS linting 的编辑器。 (例如,为您正在使用的编辑器寻找 JSHint 插件 - 如果它不支持此类内容,则使用更复杂的编辑器。)
  • +1 用于具有 linting 支持的编辑器。通过及早发现错误,它将为您节省大量时间。我个人使用的是由jshint 支持的syntastic vim plugin

标签: javascript google-chrome google-chrome-extension google-chrome-devtools crossrider


【解决方案1】:

在您的内容脚本中,在脚本开头添加行 debugger;。错误消息打印在您的脚本被注入到的网页的 javascript 控制台上。因此,如果您的内容脚本在 abcd.html 上运行,请打开 abcd.html,然后打开 this 页面的 Javascript 控制台。然后触发运行您的内容脚本的任何内容 - 按钮单击等。

编辑: 如果您的脚本要在background.html 上运行,那么要捕获脚本中的解析错误,

  1. 在 chrome 中打开扩展页面。
  2. 确保已启用开发者模式。
  3. 加载解压后的扩展。
  4. 点击 chrome 扩展页面左侧的箭头,展开您的扩展。
  5. 点击那里给出的background.html 的链接。
  6. 页面打开。如果内容脚本有错误,会在控制台显示错误信息和行号,并无法打开background.html页面。

【讨论】:

  • 谢谢,debugger 如果 js 文件解析正确并到达它可以运行并点击该行的地步,则效果很好。由于缺少括号,js文件完全被破坏了。该脚本无法解析,debugger 也无济于事(即使它是文件中的第一个薄文件)。
  • 没有。甚至检测到解析错误。例如,我刚得到这个 "Uncaught SyntaxError: Unexpected end of input menuitem.js:100" 。我删除了脚本中的右括号并得到了它。您必须在目标页面上,并打开开发人员工具。或者,如果您由于某种原因无法正常工作,请使用 jslint.com
  • 对于 background.html ,您必须从扩展页面手动打开背景页面。检查答案。
  • @jozxyqk:JSLint 不太可能有帮助(因为它可能会发现更多错误。尝试 JSHint 代替。(只需我的 2 美分。)
  • 正如我所说,debugger 不适合我。这是一个内容脚本,而不是背景(为每个加载的页面注入)。例如,我将调试器放在脚本的开头,从 if 语句中删除了 } 大括号或结束 ) 并且..没有内容脚本..没有错误。
猜你喜欢
  • 1970-01-01
  • 2017-09-25
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
  • 2018-04-14
相关资源
最近更新 更多