在运行时设置content_script匹配
Setting the content_script matches at runtime
我正在开发一个chrome扩展,需要一个content_script添加自定义控件到媒体播放器。但是,我希望允许用户通过选项控制面板(为他们的个人媒体服务器)设置播放器的域。
似乎内容脚本的域必须在清单中静态设置。Json文件在chrome扩展。有没有一种方法可以通过编程来设置?要实现这样的操作:
"content_scripts": [
{
"matches": ["<variable_from_config>"],
"js": ["player.js"],
"run_at": "document_start"
}
]
您可以使用新的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
和webext-dynamic-content-scripts
。他们还将在下次浏览器启动时注册您的脚本,并允许用户删除新的权限和脚本。
相关文章:
- jQuery匹配JSON对象的部分文本
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- Javascript Reg Exp不正确匹配
- Grunt匹配正则表达式
- Regex匹配除“”之外的所有字符;.js”;
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 在javascript中搜索具有重复值的两个数组中的匹配值
- RegExp:匹配Javascript中除regex值之外的所有内容
- 调用正则表达式匹配的函数
- 高库存时期时间与时区不匹配
- 如何检查字符串的一部分与数组匹配
- 单击按钮时循环浏览匹配的表
- JQuery:向多个匹配结果添加换行符的最简单方法
- 正则表达式与数字中的第二个点匹配
- 在javascript中,I'我很难弄清楚如何让regex只替换捕获而不替换匹配
- html文件中的script标记根本不起作用
- 将一个表的id与另一个表中的user_id进行匹配,以获取mysql中的记录
- 如何通过书写系统(SCRIPT)匹配Unicode
- 正则表达式匹配 $,但不匹配 Google Apps Script body.replaceText() 中的 $
- Google Apps Script - . setvalue在单元格中基于for循环匹配