2016-12-20 3 views
3

Я создаю расширение chrome, которое добавляет действие с глобальной горячей клавишей JIRA. Я могу жестко скопировать URL-адрес моего экземпляра JIRA в мое расширение, но я бы хотел, чтобы этот URL-адрес настраивался пользователем, так как другие пользователи будут иметь разные URL-адреса для своих собственных экземпляров JIRA.Пользовательские разрешения для url в расширении chrome

Я хотел бы знать, есть ли лучший способ сделать это, чем просто предоставить разрешение на расширение для всех URL-адресов и проверить мой фоновый скрипт, чтобы сравнить текущий URL-адрес с тем, который пользователь выбрал в качестве настройки. В идеале мой сценарий background/inject будет работать только на выбранном пользователем URL-адресе. Я посмотрел на permissions api, но не могу понять.

Мой текущий manifest.json выглядит следующим образом: у меня есть жестко закодированное разрешение на мой URL-адрес jira, есть ли способ сделать это разрешение настраиваемым пользователем?

{ 
    "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://*/ в ваших разрешениях, предпочтительно необязательные разрешения. Ваше предложение - сравнение текущего URL-адреса с параметром в настройках - звучит очень разумно: просто сравните текущий URL-адрес с настройкой и сделайте chrome.permissions.request, если он будет соответствовать, тихо остановите выполнение кода, если он не удастся.

я могу думать о работе, вокруг, чтобы избежать этого, но, честно говоря, это не дает вам много:

  1. Использование http://*/ и https://*/ как опция разрешения (вы действительно должны действительно сделать их необязательными в любом случае).
  2. Сделать звонок chrome.permissions.request в момент изменения пользователем .
  3. В своем фоновом скрипте сделайте chrome.permissions.contains вызов текущего URL-адреса и тихонько прекратите выполнение кода, если нет разрешения.

Результатом вышесказанного является то, что вместо сравнения текущего URL-адреса с настройкой он будет сравнивать текущий URL-адрес с тем, на что ранее было получено разрешение. Я думаю, это немного упрощает фоновый скрипт (вам не нужно получать URL-адрес, сохраненный в настройках), но делает код страницы параметров немного более сложным.