无论我做什么,我似乎无法完成这项工作。让我演示一个非常简单的示例扩展。这是manifest.json
:
{
"manifest_version": 2,
"name": "Sample Of Content Script",
"description": "Changes the background of a page pink",
"version": "1.0",
"content_scripts": [
{
"matches": [ "<all_urls>" ],
"js": [ "changer.js" ]
}
],
"permissions": [
"webNavigation"
],
"background": {
"scripts": [ "background.js" ]
}
}
请注意,我的content_scripts
条目与all_urls
匹配,(根据Google documentation)应与file:///
个网址匹配。
background.js
:
(function (chrome) {
'use strict';
chrome.webNavigation.onCompleted.addListener(function (details) {
chrome.tabs.sendMessage(details.tabId, {
action: 'changeBackground',
color: 'pink'
});
});
})(chrome);
changer.js
(内容脚本):
(function (chrome) {
'use strict';
chrome.runtime.onMessage.addListener(function (request) {
if (request.action !== 'changeBackground') { return; }
document.body.style.background = request.color;
});
})(chrome);
此扩展程序已在Chrome网上应用店中发布,因此您可以查看结果:
https://chrome.google.com/webstore/detail/sample-of-content-script/bkekbfjgkkineeokljnobgcoadlhdckd
这是一个非常简单的扩展。导航到一个页面,它将页面的背景变为粉红色。不幸的是,它不适用于任何file:///
个网址。 changer.js
脚本未加载到页面中,没有任何反应。
chrome.tabs.executeScript()
而不是将脚本放入清单中。这以一种更明显的方式失败,说我没有请求权限来修改清单中的file:///
网址。"file:///*/*"
添加到permissions
的{{1}}部分。这似乎适用于manifest.json
,但Chrome网上应用店拒绝了该扩展程序,并表示不允许chrome.tabs.executeScript()
权限。file:///
中的content_script
部分,并尝试将manifest.json
添加到清单中的"file:///*/*
部分。同样,这在开发版本中有效,但当我将其上传到Chrome网上应用店然后安装它时,它无效。答案 0 :(得分:3)
<all_urls>
确实涵盖file://
方案,但必须在扩展程序列表中手动激活。
如果某个扩展程序具有涵盖file://
计划的权限,则会在“隐身允许”旁边显示“允许访问文件网址”复选框。用户必须手动启用;在解释过程后,您可以通过创建包含预配置URL的选项卡来提供帮助:
chrome.tabs.create({url: "chrome://extensions/?id=" + chrome.runtime.id});