我正在学习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页面时才开始显示在开发人员工具中?
答案 0 :(得分:1)
非常肯定这只是巧合和我在第一次加载扩展程序时经常看到的故障。
当我使用您的"<all_urls>"
清单时,我会在开发工具的 Sources 标签中看到contentScriptFirstApp.js
。我可以很好地切换到内容脚本上下文。
但似乎有时当第一次从磁盘安装扩展时,第一个选项卡的开发工具并不总能看到它。我and others已经看到了这个问题,但我还没有想出按需复制问题的可靠方法。
无论原因是什么,关闭该标签并打开一个新标签始终会修复它(到目前为止)。因此,当您更改清单巧合在开发工具中出现时,可能存在足够的介入。就像我说的那样,无论matches
设置如何,清单工作和扩展都会出现在我身上。