2

我正在学习 Chrome 扩展并制作一些 hello world 应用程序。我正在这里处理内容脚本。

首先,我的应用程序非常简单,它只是一个加载内容脚本的清单。

这是清单

{
  "name": "turn all th into TH",
  "version": "1.0",
  "permissions": [
    "http://*/*"
  ],
  "manifest_version": 2,

 "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["contentScriptFirstApp.js"]
    }
  ]
}

并且内容脚本只是一行

警报('你好');

现在我运行它,每次加载页面时都会显示警报框。

然而,奇怪的是,虽然代码正在运行,但我在开发者工具中找不到 ContentScript。

只有当我对我的清单进行轻微调整时,更改 match 参数,而不是 allow ,它只与 http 文件匹配,如下所示,我可以在开发人员工具中看到内容脚本。

{
  "name": "turn all th into TH",
  "version": "1.0",
  "permissions": [
    "http://*/*"
  ],
  "manifest_version": 2,

 "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["contentScriptFirstApp.js"]
    }
  ]
}

只是好奇这是为什么。在这两种情况下,代码都在运行并显示警告框,但为什么只有当内容脚本页面将“matches”参数设置为 http 页面时,它才会开始显示在开发人员工具中?

4

1 回答 1

1

很确定这只是巧合,也是我第一次加载扩展时经常看到的故障。

当我使用您的"<all_urls>"清单时,我在开发工具的SourcescontentScriptFirstApp.js选项卡中看到了一切正常。我可以很好地切换到内容脚本上下文。

但似乎有时在一次从磁盘安装扩展时,第一个选项卡的开发工具并不总是能看到它。我和其他人已经看到了这个问题,但我还没有找到一种可靠的方法来按需复制问题。

无论是什么原因,关闭该选项卡并打开一个新选项卡总是可以修复它(到目前为止)。因此,当您更改清单时,可能有足够的时间使扩展巧合地出现在开发工具中。就像我说的那样,无论设置如何,清单都有效并且扩展程序会显示给我matches

于 2013-03-03T11:45:10.113 回答