A permissão activeTab
concede à extensão acesso temporário à guia ativa no momento quando a
o usuário invoca a extensão, por exemplo, clicando na ação do navegador; Acesso à guia
dura enquanto o usuário está na página e é revogado quando o usuário sai da página ou fecha a guia.
Isso serve como uma alternativa para muitos usos do <all_urls>
, mas não mostra nenhuma mensagem de aviso.
durante a instalação:
Observação:na versão M72 e mais recentes, a permissão activeTab
será concedida até que o usuário navegue até um
origem diferente. Ou seja, se o usuário invocar a extensão em https://example.com e depois
navegar para https://example.com/foo, a extensão continuará a ter acesso à página. Se o
o usuário acessar https://chromium.org, o acesso será revogado.
Sem activeTab
:
Com activeTab
:
Exemplo
Consulte a extensão de exemplo 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"'
});
});
Motivação
Considere uma extensão de corte da Web que tenha uma ação do navegador e um item de menu de contexto. Isso pode precisar acessar as guias apenas quando a ação do navegador for clicada ou quando item do menu de contexto é executado.
Sem activeTab
, essa extensão precisaria solicitar acesso total e permanente a todos os sites,
para que pudesse fazer seu trabalho caso fosse chamado pelo usuário. Isso é muito
poder confiar a uma extensão tão simples. E, se a extensão for comprometida, o atacante
tem acesso a tudo que a extensão tinha.
Por outro lado, uma extensão com a permissão activeTab
só obtém acesso a uma guia em resposta
a um gesto explícito do usuário. Se a extensão for comprometida, o invasor terá que esperar pelo
invoque a extensão antes de obter acesso. E esse acesso só dura até que a guia seja
navegou ou está fechado.
O que o ActiveTab permite
Enquanto a permissão activeTab
estiver ativada para uma guia, uma extensão poderá:
- Chame
tabs.executeScript
outabs.insertCSS
nessa guia. - Acesse o URL, o título e o favicon dessa guia usando uma API que retorna um objeto
tabs.Tab
. (essencialmente,activeTab
concede a permissãotabs
temporariamente). - Interceptar solicitações de rede na guia para a origem do frame principal usando o método webRequest API. A extensão recebe temporariamente permissões de host para a origem do frame principal da guia.
Como invocar a guia ativa
Os gestos do usuário abaixo ativam activeTab
:
- Executar uma ação do navegador
- Executar uma ação de página
- Executar um item do menu de contexto
- Executar um atalho de teclado usando a API Commands (em inglês)
- Aceitação de uma sugestão da API da omnibox