为什么要更改它以便我的内容脚本运行http站点而不是所有URL使内容脚本显示在Developer工具中?

时间:2013-03-03 10:52:32

标签: google-chrome google-chrome-extension google-chrome-devtools content-script

我正在学习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"]
    }
  ]
}

和内容脚本只是一行

  

警报( '你好');

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

然而,奇怪的是,虽然代码正在运行,但我无法在Developer工具中找到ContentScript。

只有当我对我的清单稍作调整时,才更改匹配参数,以便它不会与下面的http文件匹配,我只能在开发人员工具中看到内容脚本。

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

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

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

1 个答案:

答案 0 :(得分:1)

非常肯定这只是巧合和我在第一次加载扩展程序时经常看到的故障。

当我使用您的"<all_urls>"清单时,我会在开发工具的 Sources 标签中看到contentScriptFirstApp.js。我可以很好地切换到内容脚本上下文。

但似乎有时当第一次从磁盘安装扩展时,第一个选项卡的开发工具并不总能看到它。我and others已经看到了这个问题,但我还没有想出按需复制问题的可靠方法。

无论原因是什么,关闭该标签并打开一个新标签始终会修复它(到目前为止)。因此,当您更改清单巧合在开发工具中出现时,可能存在足够的介入。就像我说的那样,无论matches设置如何,清单工作和扩展都会出现在我身上。