Разрешение activeTab,Разрешение activeTab

Разрешение activeTab предоставляет расширению временный доступ к текущей активной вкладке, когда пользователь вызывает расширение, например, щелкнув его действие в браузере . Доступ к вкладке сохраняется, пока пользователь находится на этой странице, и аннулируется, когда пользователь уходит или закрывает вкладку.

Это служит альтернативой для многих вариантов использования <all_urls> , но во время установки не отображается предупреждающее сообщение :

Примечание. Начиная с M72, разрешение activeTab будет предоставляться до тех пор, пока пользователь не перейдет к другому источнику. То есть, если пользователь вызывает расширение на https://example.com, а затем переходит на https://example.com/foo, расширение продолжит иметь доступ к странице. Если пользователь перейдет на https://chromium.org, доступ будет отозван.

Без activeTab :

Без ActiveTab

С activeTab :

С активной вкладкой

Пример

См. пример расширения Page Redder :

{
 
"name": "Page Redder",
 
"version": "2.0",
 
"permissions": [
   
"activeTab"
 
],
 
"background": {
   
"scripts": ["background.js"],
   
"persistent": false
 
},
 
"browser_action": {
   
"default_title": "Make this page red"
 
},
 
"manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome
.browserAction.onClicked.addListener(function(tab) {
 
// No tabs or host permissions needed!
  console
.log('Turning ' + tab.url + ' red!');
  chrome
.tabs.executeScript({
    code
: 'document.body.style.backgroundColor="red"'
 
});
});

Мотивация

Рассмотрим расширение веб-вырезки, имеющее действие браузера и пункт контекстного меню . Этому расширению действительно может потребоваться доступ к вкладкам только при нажатии на действие браузера или при выполнении пункта контекстного меню.

Без activeTab этому расширению пришлось бы запрашивать полный, постоянный доступ к каждому веб-сайту, просто чтобы оно могло выполнять свою работу, если бы оно было вызвано пользователем. Это очень большая мощность, которую можно доверить такому простому расширению. И если расширение когда-либо будет скомпрометировано, злоумышленник получит доступ ко всему, что имело расширение.

Напротив, расширение с разрешением activeTab получает доступ к вкладке только в ответ на явный жест пользователя. Если расширение скомпрометировано, злоумышленнику придется дождаться, пока пользователь вызовет расширение, прежде чем получить доступ. И этот доступ длится только до тех пор, пока вкладка не будет перемещена или закрыта.

Что позволяет activeTab

Хотя для вкладки включено разрешение activeTab , расширение может:

  • Вызовите tabs.executeScript или tabs.insertCSS на этой вкладке.
  • Получите URL-адрес, заголовок и значок этой вкладки через API, который возвращает объект tabs.Tab (по сути, activeTab временно предоставляет разрешение tabs ).
  • Перехватывайте сетевые запросы на вкладке к источнику основного кадра вкладки с помощью API webRequest . Расширение временно получает разрешения хоста для источника основного кадра вкладки.

Вызов activeTab

Следующие пользовательские жесты включают activeTab :