dan*_*hel 7 javascript google-chrome google-chrome-extension
无论我做什么,我似乎都无法完成这项工作。让我用一个非常简单的示例扩展来演示。这是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" ]
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我的content_scripts
条目匹配all_urls
,它(根据Google 文档)应该匹配file:///
URL。
的background.js
:
(function (chrome) {
'use strict';
chrome.webNavigation.onCompleted.addListener(function (details) {
chrome.tabs.sendMessage(details.tabId, {
action: 'changeBackground',
color: 'pink'
});
});
})(chrome);
Run Code Online (Sandbox Code Playgroud)
和changer.js
(内容脚本):
(function (chrome) {
'use strict';
chrome.runtime.onMessage.addListener(function (request) {
if (request.action !== 'changeBackground') { return; }
document.body.style.background = request.color;
});
})(chrome);
Run Code Online (Sandbox Code Playgroud)
此扩展程序已发布在 Chrome 网上应用店,因此您可以查看实际结果:
https://chrome.google.com/webstore/detail/sample-of-content-script/bkekbfjgkkineeokljnobgcoadlhdckd
这是一个非常简单的扩展。导航到一个页面,它会将页面的背景变成粉红色。不幸的是,它不适用于任何file:///
URL。该changer.js
脚本没有加载到页面中,并没有任何反应。
chrome.tabs.executeScript()
而不是将脚本放入清单中。这以更明显的方式失败,说我没有请求修改file:///
清单中的 URL 的权限。"file:///*/*"
到permissions
的部分manifest.json
。这似乎适用于chrome.tabs.executeScript()
,但 Chrome 网上应用店拒绝了该扩展程序,称file:///
不允许使用权限。content_script
部分manifest.json
并尝试添加"file:///*/*
到matches
清单中的部分。同样,这在开发版本中有效,但是当我将它上传到 Chrome 网上应用店然后安装它时,它不起作用。<all_urls>
确实涵盖了file://
方案,但必须在扩展列表中手动激活。
如果扩展程序具有涵盖file://
方案的权限,则“允许隐身”旁边将有一个“允许访问文件 URL”复选框。用户必须手动启用该功能;在解释该过程后,您可以通过创建带有预配置 URL 的选项卡来提供帮助:
chrome.tabs.create({url: "chrome://extensions/?id=" + chrome.runtime.id});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1384 次 |
最近记录: |