1

我正在开发一个 chrome 扩展,它需要一个 content_script 来向媒体播放器添加自定义控件。但是,我希望允许用户通过选项控制面板(用于他们的个人媒体服务器)设置播放器的域。

似乎必须在 chrome 扩展的 manifest.json 文件中静态设置内容脚本的域。有没有办法以编程方式设置?要实现这样的目标:

"content_scripts": [
  {
    "matches": ["<variable_from_config>"],
    "js": ["player.js"],
    "run_at": "document_start"
  }
]
4

1 回答 1

1

您可以使用新的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-togglewebext-dynamic-content-scripts. 他们还将在下次浏览器启动时注册您的脚本,并允许用户删除新的权限和脚本。

于 2019-08-10T10:51:48.673 回答