设置content_script在运行时匹配

时间:2013-05-01 21:21:13

标签: javascript google-chrome-extension

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

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

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

1 个答案:

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