2016-12-20 74 views
3

我正在創建一個Chrome擴展,該擴展爲全球熱鍵添加一個動作給JIRA。我可以將自己的JIRA實例的url硬編碼到我的擴展中,但是我希望此url可以由用戶配置,因爲其他用戶將爲他們自己的JIRA實例使用不同的URL。Chrome擴展中的用戶可配置url權限

我想知道是否有一個更好的方式來做到這一點,而不僅僅是給我的所有URL的擴展權限,並檢查我的後臺腳本,以比較當前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" 
     ] 
    } 
    ] 
} 

回答

2

不管你做什麼,以注入任意主機,你有你的權限http://*/https://*/,最好是可選權限。您的建議 - 將當前網址與設置中的網址進行比較 - 聽起來非常合理:只需將當前網址與設置中的網址進行比較,並在匹配的情況下創建一個chrome.permissions.request,如果該代碼失敗,將自動停止運行您的代碼。

我能想到一個變通方法來避免這種情況,但老實說,它不會給你太多:

  1. 使用http://*/https://*/可選權限(你真的應該真正使反正他們可選)。
  2. 在用戶修改選項時撥打chrome.permissions.request
  3. 在您的後臺腳本中,請撥打chrome.permissions.contains調用當前網址,並在沒有權限的情況下自動停止運行您的代碼。

上述結果是,不是將當前url與設置中的url進行比較,而是將當前url與擴展先前獲得許可的任何url進行比較。我猜它有點簡化了後臺腳本(你不必將url存儲在設置中),但是使選項頁面代碼更復雜一些。