Удалите запрос разрешения «Просмотреть историю просмотров» для расширения Chrome - PullRequest
5 голосов
/ 02 августа 2011

Вот мое затруднительное положение.Я пишу расширение для Google Chrome.И это прекрасно работает.Это тема для Google+.

Хватит с этим.Чтобы отобразить значок в адресной строке, мне нужно иметь «вкладки» как часть моих разрешений.Я считаю, что это также заставляет интернет-магазин сказать, что мое расширение может получить доступ к истории браузера.Есть ли способ исправить это?

(Источник здесь: https://github.com/bichiliad/G-Theme)

Ответы [ 3 ]

3 голосов
/ 22 мая 2015

Интересно, что на самом деле немногие вещи требуют разрешения "tabs" в наше время.

Цитирование самой документации (выделено мое):

БольшинствоAPI chrome.tabs может использоваться без объявления каких-либо разрешений.Однако разрешение "tabs" требуется для того, чтобы заполнял свойства url, title и favIconUrl из Tab.

Таким образом, вы можете легко манипулировать вкладками (например, создавать их) без необходимости разрешения.

Более того, когда разрешение "activeTab" активно (расширение было вызвано для текущегоtab), ограниченные поля будут заполнены , если вы запросите их.


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

Однако, даже если у вас нет "tabs"разрешение, вы можете запросить по шаблону URL. Вам требуются разрешения хоста для этого шаблона URL.

Итак, предположим, вы хотите знать, открыто ли www.example.com на некоторых вкладках:

chrome.tabs.query({url: "*://www.example.com/*"}, function(tabs) {
  // Look, ma, no "tabs"!
});

Подтверждениеконцепция: GitHub

Важно: этот последний трюк не работает в Firefox WebExtensions. Они безусловно генерируют исключение, если вкладки запрашиваются по URL-адресу без разрешения "tabs".Да, это прямое противоречие с документацией даже для Chrome, поэтому он может перестать работать в какой-то момент.


Теперь предположим, что вы все еще хотите знать точный URL (с помощью вышеуказанного метода вы можете толькоугадайте) и название / значок для некоторых вкладок.Вам все еще нужно разрешение "tabs"?

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

Это приведет к другому предупреждению:

Чтение и изменение ваших данных на {списке веб-сайтов}

против одного для "tabs":

Чтение истории просмотров

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

3 голосов
/ 02 августа 2011

Вам не нужно разрешение tabs для отображения значка действия браузера, но оно требуется для chrome.tabs.onUpdated.addListener() на фоновой странице.

tabs разрешение не должно вызывать предупреждение "Ваша история просмотров", это ошибка в галерее. Согласно спецификациям должно быть написано "Ваши вкладки и активность в просмотре". Я бы предложил отправить отчет об ошибке .

0 голосов
/ 20 мая 2015

РЕДАКТИРОВАТЬ: Это на самом деле не является хорошей практикой (более подробная информация в комментариях ниже). Я не буду удалять этот ответ, просто чтобы другие знали, чего не следует делать.


У меня была такая же проблема, и я решил ее, просто добавив "http://*/*" и "https://*/*" к разрешениям.

Как это:

  "permissions": [
    "tabs",
    "http://*/*",
    "https://*/*"
  ]

Я не знаю точно, почему, и в этом нет особого смысла (не так ли?), Но теперь сообщение с разрешением «Чтение и изменение истории просмотров» пропало.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...