Google chrome extension 内容“脚本匹配”吗;chrome extension://*/*";工作

Google chrome extension 内容“脚本匹配”吗;chrome extension://*/*";工作,google-chrome-extension,Google Chrome Extension,我想在带有chrome扩展名://URL的iframe上运行内容脚本。我在manifest.json中添加了一行从文档中复制的内容 但当我重新加载扩展时,会收到一个警报: Could not load extension from '/work/sirius/extension'. Invalid value for 'content_scripts[2].matches[0]': Invalid scheme. 你知道如何实现这一点吗?没有。只有ftp:、文件:、http:和https:可

我想在带有chrome扩展名://URL的iframe上运行内容脚本。我在manifest.json中添加了一行从文档中复制的内容

但当我重新加载扩展时,会收到一个警报:

Could not load extension from '/work/sirius/extension'. 
Invalid value for 'content_scripts[2].matches[0]': Invalid scheme.

你知道如何实现这一点吗?

没有。只有
ftp:
文件:
http:
https:
可以通过内容脚本声明进行匹配

拒绝任何
匹配项
排除匹配项
字段中的无效URL模式(尝试加载扩展时生成错误)

将忽略上的无效模式

如果要在扩展中的选项卡上运行脚本,请在后台脚本中使用。
更好的是,设计你的扩展页面,使其能够()。

我遇到了完全相同的问题,看看API,它清楚地表明它们接受
chrome扩展://*/*
,但它们不接受


他们需要更新API,以免混淆人们

Chrome的作者似乎已经悄悄地取消了将内容脚本注入
Chrome扩展:
页面的功能。仍然说它有效,甚至包含了chrome extension:scheme的示例,但实际上它不起作用。因此,现在只有
http:
https:
ftp:
从框中工作”和
文件:
可以工作,如果您的扩展名用户已经在扩展名上启用了此功能(chrome://extensions/)页面


更新:现在上面提到的文档已经更新,并且没有提到将内容脚本注入
浏览器扩展:
页面的能力。

您可以将js注入iframe html(
浏览器扩展:
页面),而无需在
manifast.json
中声明。注入的js可以直接访问chromeapi

iframe.html:

<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
...
</body>
<script src="iframe.js"></script>
</html>

我想在网页的iframe上运行内容脚本。chrome.extension.getViews()允许在扩展上编写脚本,而不是在网页上编写脚本。我正在为iframe实现一种基于postMessage的通信机制,但iframe不是我的代码。因此,我希望content_脚本允许我注入PostessSage()端点。上面指向“清单文件中的权限选项”的链接引导我使用编程脚本注入进行研究。不幸的是,这也行不通:承载chrome扩展名://iframe的web应用程序无法运行注入其iframe所需的扩展代码。当选项卡有匹配的URL时,也许我可以编写一个单独的扩展以编程方式注入。@johnjbarton你说得对。由于在尝试permissions选项时没有看到错误,我假设它是一个有效值。经过进一步的调查,我发现没有为无效模式生成错误。我尝试了从扩展中进行编程注入。这也会失败,因为iframe本身是以编程方式添加的,而chrome.tabs.executeScript()即使使用“allFrames:true”也只在html解析过程中触发。可能是web应用程序上的一个内容脚本,它监视与chrome扩展名://url匹配的iFrame,然后向后台页面发送消息以调用chrome.tabs.executeScript()。但这超出了我的极限:-(更正文档还有一个悬而未决的问题:由于@Konstantin Smolyanin在下面的回答,文档已经更新。正如@Konstantin Smolyanin在下面的回答中所指出的,文档现在没有提到将内容脚本注入
chrome扩展:
页面的能力。可能重复
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
...
</body>
<script src="iframe.js"></script>
</html>
console.log(chrome); // {loadTimes: ƒ, csi: ƒ, …}