content_scripts是否与“chrome-extension:// * / *”匹配?

时间:2012-04-17 17:44:21

标签: google-chrome-extension

我想在带有chrome-extension:// URL的iframe上运行内容脚本。我在manifest.json中添加了一行,我从文档http://code.google.com/chrome/extensions/match_patterns.html

中复制了一行
 chrome-extension://*/*

但是当我重新加载我的扩展程序时,我会收到警报:

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

知道如何解决这个问题吗?

4 个答案:

答案 0 :(得分:8)

没有。内容脚本声明只能匹配ftp:file:http:https:

matchesexclude_matches字段中的任何网址格式都被拒绝(在尝试加载扩展程序时生成错误)。

忽略permissions option in the manifest file处的无效模式。

如果要在扩展程序的标签页上运行脚本,请在后台脚本中使用chrome.extension.getViews。 更好的是,设计您的扩展程序页面,使其effectively communicate with each other example

答案 1 :(得分:8)

我遇到了完全相同的问题,请查看API http://code.google.com/chrome/extensions/match_patterns.html,它清楚地表明他们接受chrome-extension://*/*但他们却不接受。{/ p>

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

答案 2 :(得分:5)

似乎Chrome作者已经默默地删除了将内容脚本注入chrome-extension:页面的功能。 Documentation仍然说它有效,甚至包含 chrome-extension:方案的示例,但实际上它不起作用。因此,现在只有http:https:ftp:可以在“框中”工作,如果您的扩展程序的用户在扩展程序上启用了此功能,则file:可以正常工作(chrome:// extensions) /)页面。

更新:现在上面提到的文档已经更新,并且没有说明将内容脚本注入chrome-extension:页面的能力。

答案 3 :(得分:0)

您可以将js注入到iframe html(chrome-extension:页)中,而无需在manifast.json中声明。注入的js可以直接访问Chrome API。

iframe.html:

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

iframe.js:

console.log(chrome); // {loadTimes: ƒ, csi: ƒ, …}