我正在开发一个chrome扩展程序,需要content_script才能向媒体播放器添加自定义控件。但是,我想允许用户通过选项控制面板(用于他们的个人媒体服务器)设置播放器的域。
似乎必须在chrome扩展中的manifest.json文件中静态设置内容脚本的域。有没有办法以编程方式设置?要实现这样的目标:
"content_scripts": [
{
"matches": ["<variable_from_config>"],
"js": ["player.js"],
"run_at": "document_start"
}
]
答案 0 :(得分:0)
您可以使用新的contentScripts.register()
API来实现您想要的功能:以编程方式注册内容脚本。
browser.contentScripts.register({
matches: ['https://your-dynamic-domain.example.com/*'],
js: [{file: 'content.js'}]
});
此API仅在Firefox中可用,但是您可以使用Chrome polyfill。
要使其正常工作,您仍然需要您要在其上注册脚本的域的权限,因此您可以在清单中使用optional_permissions
,并使用chrome.permissions.request
来让用户添加新域按需。
我还编写了一些工具来进一步简化您和最终用户的操作,例如
webext-domain-permission-toggle
and webext-dynamic-content-scripts
。他们还将在下次浏览器启动时注册您的脚本,并允许用户删除新的权限和脚本。