我开发了一个镀铬扩展程序,它工作得很好。
manifest.json
的一部分如下所示:
"content_scripts":[
{
"js":["js/script.js"],
"css": ["css/style.css"],
"matches": ["http://localhost/*", "https://localhost/*"]
}
],
所以扩展只在域localhost
时注入内容脚本,这也正常工作。现在我想要一种方法,扩展程序弹出窗口可以包含 enable extenstion on this domain
或 disable extension on this domain
,这样用户就可以启用/禁用根据需要进行扩展。
我在多个广告拦截器插件中看到过,所以我想它应该是可能的。任何帮助将不胜感激。
答案 0 :(得分:1)
Google 正在为扩展清单 v3 开发程序化脚本注册。新 API 将被称为 chrome.scripting.registerContentScript 并且几乎与 Firefox 已有的相匹配,减去 API 的直观命名。您可以在此Chrome bug中关注实施状态。
答案 1 :(得分:0)
这需要两个部分:
现在有contentScripts.register()
API,可让您以编程方式注册内容脚本。
browser.contentScripts.register({
matches: ['https://your-dynamic-domain.example.com/*'],
js: [{file: 'content.js'}]
});
此API仅在Firefox中可用,但是您可以使用Chrome polyfill。
通过使用chrome.permissions.request
,您可以添加可以在其上注入内容脚本的新域。一个例子是:
// In a content script, options page or popup
document.querySelector('button').addEventListener('click', () => {
chrome.permissions.request({
origins: ['https://your-dynamic-domain.example.com/*']
}, granted => {
if (granted) {
/* Use contentScripts.register */
}
});
});
为此,您必须通过将其添加到manifest.json
{
"optional_permissions": [
"http://*/*",
"https://*/*"
]
}
还有一些工具可以为您和最终用户进一步简化此操作,例如
webext-domain-permission-toggle
and webext-dynamic-content-scripts
,许多与GitHub相关的扩展都使用它来添加对自托管GitHub安装的支持。
他们还将在下次浏览器启动时注册您的脚本,并允许用户删除新的权限和脚本。