我正在创建一个Chrome扩展程序,它将一个带有全局热键的操作添加到JIRA。我可以将我自己的JIRA实例的url硬编码到我的扩展中,但我希望这个url是用户可配置的,因为其他用户将拥有自己的JIRA实例的不同url。
我想知道是否有更好的方法可以做到这一点,而不仅仅是为所有网址提供扩展权限并检查我的后台脚本,以将当前网址与用户选择的网址进行比较。理想情况下,我的后台/注入脚本只能在用户选择的URL上运行。我查看了permissions api,但无法弄明白。
我当前的manifest.json看起来如下,我对我的jira url有硬编码权限,有没有办法让这个权限用户可配置?
{
"permissions": [
"contentSettings",
"storage",
"commands",
"http://myjiraurl/*"
],
"background": {
"matches": [
"http://myjiraurl/*"
],
"scripts": ["src/background/background.js"]
},
"content_scripts": [
{
"matches": [
"http://myjiraurl/*"
],
"js": [
"js/jquery.min.js",
"src/inject/inject.js"
]
}
]
}
答案 0 :(得分:2)
无论你做什么,为了注入任意主机,你 在你的权限中拥有http://*/
和https://*/
,最好是可选权限。您的提案 - 将当前网址与设置中的网址进行比较 - 听起来非常合理:只需将当前网址与设置中的网址进行比较,如果匹配则生成chrome.permissions.request
,如果失败则默默停止运行您的代码。
我可以想到一个可以避免这种情况的解决办法,但说实话,它并没有给你太多帮助:
http://*/
和https://*/
作为可选权限(无论如何,你真的应该让它们成为可选项)。chrome.permissions.request
来电。chrome.permissions.contains
调用,如果没有权限,则默默停止运行您的代码。上述结果是,不是将当前网址与设置中的网址进行比较,而是将当前网址与之前获得权限的扩展名进行比较。我想它稍微简化了后台脚本(你不必将url存储在设置中),但会使选项页面代码更复杂。