Интересно, что на самом деле немногие вещи требуют разрешения "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"
имеет смысл.