用户可在chrome扩展程序中配置网址权限

时间:2016-12-20 10:34:47

标签: google-chrome-extension

我正在创建一个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"
      ]
    }
  ]
}

1 个答案:

答案 0 :(得分:2)

无论你做什么,为了注入任意主机,你 在你的权限中拥有http://*/https://*/,最好是可选权限。您的提案 - 将当前网址与设置中的网址进行比较 - 听起来非常合理:只需将当前网址与设置中的网址进行比较,如果匹配则生成chrome.permissions.request,如果失败则默默停止运行您的代码。

我可以想到一个可以避免这种情况的解决办法,但说实话,它并没有给你太多帮助:

  1. 使用http://*/https://*/作为可选权限(无论如何,你真的应该让它们成为可选项)。
  2. 在用户修改选项时进行chrome.permissions.request来电。
  3. 在后台脚本中,对当前网址进行chrome.permissions.contains调用,如果没有权限,则默默停止运行您的代码。
  4. 上述结果是,不是将当前网址与设置中的网址进行比较,而是将当前网址与之前获得权限的扩展名进行比较。我想它稍微简化了后台脚本(你不必将url存储在设置中),但会使选项页面代码更复杂。