9

I want to run a content script on an iframe with a chrome-extension:// URL. I added a line to my manifest.json that I copied out of the documentation http://code.google.com/chrome/extensions/match_patterns.html

 chrome-extension://*/*

But when I reload my extension I get an alert:

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

Any idea how to get this to worK?

4

4 回答 4

13

不能。只有ftp:, file:,http:https:可以与内容脚本声明匹配。

matches任何和字段中的无效 URL 模式都会exclude_matches被拒绝(在尝试加载扩展程序时生成错误)。

permissions清单文件中选项的无效模式将被忽略。

如果要在扩展程序的选项卡上运行脚本,请chrome.extension.getViews在后台脚本中使用。更好的是,设计您的扩展页面,使它们能够有效地相互通信 示例

于 2012-04-17T17:56:49.343 回答
8

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

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

于 2012-07-30T19:29:02.963 回答
7

似乎 Chrome 作者已经默默地删除了将内容脚本注入chrome-extension:页面的能力。文档仍然说它有效,甚至包含带有chrome-extension:方案的示例,但实际上它不起作用。所以现在只有http:https:并且ftp:“从盒子里”file:工作,如果你的扩展用户在扩展(chrome://extensions/)页面上启用了这个,就可以工作。

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

于 2013-08-12T14:37:47.817 回答
0

您可以将 js 注入到您的 iframe html( chrome-extension:pages) 中,而无需在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: ƒ, …}
于 2020-10-22T03:02:17.087 回答