Descrição
Use a API chrome.declarativeContent
para realizar ações que dependem do conteúdo de uma página, sem precisar de permissão para ler o conteúdo.
Permissões
declarativeContent
Uso
A API Declarative Content permite que você ative a ação da sua extensão dependendo do URL de uma página da Web ou se um seletor de CSS corresponder a um elemento na página, sem precisar Adicionar permissões de host ou inserir um script de conteúdo.
Use a permissão activeTab para interagir com uma página depois que o usuário clicar no ação da extensão.
Regras
As regras consistem em condições e ações. Se alguma das condições for atendida, todas as ações serão executada. As ações são setIcon
e showAction
.
O PageStateMatcher
faz a correspondência de páginas da Web somente se todas elas estiverem listadas e os critérios sejam atendidos. Ele pode corresponder a um URL de página, um seletor composto de CSS. ou o estado marcado como favorito de uma página. A regra a seguir ativa a ação da extensão em páginas do Google quando um campo de senha está presente:
let rule1 = { conditions: [ new chrome.declarativeContent.PageStateMatcher({ pageUrl: { hostSuffix: '.google.com', schemes: ['https'] }, css: ["input[type='password']"] }) ], actions: [ new chrome.declarativeContent.ShowAction() ] };
Para ativar a ação da extensão em sites do Google com um vídeo, adicione outra , já que cada condição é suficiente para acionar todas as ações especificadas:
let rule2 = { conditions: [ new chrome.declarativeContent.PageStateMatcher({ pageUrl: { hostSuffix: '.google.com', schemes: ['https'] }, css: ["input[type='password']"] }), new chrome.declarativeContent.PageStateMatcher({ css: ["video"] }) ], actions: [ new chrome.declarativeContent.ShowAction() ] };
O evento onPageChanged
testa se alguma regra tem pelo menos uma atendida e executa as ações. As regras persistem em todas as sessões de navegação. Portanto, durante tempo de instalação da extensão, use primeiro removeRules
para limpar regras já instaladas e depois usar addRules
para registrar novas.
chrome.runtime.onInstalled.addListener(function(details) { chrome.declarativeContent.onPageChanged.removeRules(undefined, function() { chrome.declarativeContent.onPageChanged.addRules([rule2]); }); });
Com a permissão activeTab, sua extensão não exibirá nenhuma permissão. e, quando o usuário clicar na ação da extensão, ela será executada somente nas páginas relevantes.
Correspondência de URL da página
O PageStateMatcher.pageurl
faz a correspondência quando os critérios de URL são atendidos. A os critérios mais comuns são uma concatenação de host, caminho ou URL, seguido por "contém", "igual a", "prefixo" ou Sufixo. Confira alguns exemplos na tabela a seguir:
Critérios | Correspondências |
---|---|
{ hostSuffix: 'google.com' } | Todos os URLs do Google |
{ pathPrefix: '/docs/extensions' } | URLs de documentos de extensão |
{ urlContains: 'developer.chrome.com' } | Todos os URLs de documentos do Chrome Developers |
Todos os critérios diferenciam maiúsculas de minúsculas. Para uma lista completa de critérios, consulte UrlFilter.
Correspondência de CSS
As condições PageStateMatcher.css
precisam ser seletores compostos, o que significa que não é possível incluir combinadores como espaços em branco ou ">
" no seu seletores. Isso ajuda o Chrome a fazer a correspondência dos seletores com mais eficiência.
Seletores compostos (OK) | Seletores complexos (incorretos) |
---|---|
a | div p |
iframe.special[src^='http'] | p>span.highlight |
ns|* | p + ol |
#abcd:checked | p::first-line |
As condições de CSS só correspondem aos elementos exibidos: se um elemento que corresponde ao seletor for display:none
ou um dos elementos pais dele for display:none
, isso não faz com que a condição seja são correspondentes. Elementos estilizados com visibility:hidden
, posicionados fora da tela ou ocultos por outros elementos ainda pode corresponder à condição.
Correspondência de estado adicionado aos favoritos
A condição PageStateMatcher.isBookmarked
permite a correspondência dos estado favorito do URL atual no perfil do usuário. Para usar essa condição, o "favoritos" A permissão precisa ser declarada no manifesto da extensão.
Tipos
ImageDataType
Consulte https://developer.mozilla.org/en-US/docs/Web/API/ImageData.
Tipo
ImageData
PageStateMatcher
Corresponde ao estado de uma página da Web com base em vários critérios.
Propriedades
- construtor
void
A função
constructor
tem esta aparência:(arg: PageStateMatcher) => {...}
- arg
- retorna
-
- css
string[] opcional
Faz correspondência se todos os seletores de CSS na matriz corresponderem aos elementos exibidos em um frame com a mesma origem do frame principal da página. Todos os seletores na matriz precisam ser seletores compostos para acelerar a correspondência. Observação: listar centenas de seletores de CSS ou listar seletores de CSS que correspondem centenas de vezes por página pode deixar os sites mais lentos.
- isBookmarked
booleano opcional
Chrome 45 ou superiorFaz correspondência se o estado da página marcado como favorito for igual ao valor especificado. Requer a permissão de favoritos.
- pageUrl
UrlFilter opcional
Corresponde se as condições de
UrlFilter
forem atendidas para o URL de nível superior da página.
RequestContentScript
Ação de evento declarativa que injeta um script de conteúdo.
AVISO:essa ação ainda é experimental e não tem suporte em builds estáveis do Chrome.
Propriedades
- construtor
void
A função
constructor
tem esta aparência:(arg: RequestContentScript) => {...}
- retorna
-
- allFrames
booleano opcional
Se o script de conteúdo é executado em todos os frames da página correspondente ou apenas no frame superior. O padrão é
false
. - css
string[] opcional
Nomes de arquivos CSS a serem injetados como parte do script de conteúdo.
- js
string[] opcional
Nomes de arquivos JavaScript a serem injetados como parte do script de conteúdo.
- matchAboutBlank
booleano opcional
Define se o script de conteúdo será inserido em
about:blank
eabout:srcdoc
. O padrão éfalse
.
SetIcon
Ação de evento declarativa que define o ícone quadrado n-dip para a ação da página ou a ação do navegador da extensão enquanto as condições correspondentes são atendidas. Esta ação pode ser usada sem permissões de host, mas a extensão precisa ter uma ação de página ou navegador.
É preciso especificar exatamente imageData
ou path
. Ambos são dicionários que mapeiam uma série de pixels para uma representação de imagem. A representação da imagem em imageData
é um objeto ImageData. por exemplo, de um elemento canvas
, enquanto a representação da imagem em path
é o caminho para um arquivo de imagem relativo ao manifesto da extensão. Se scale
pixels da tela couberem em um pixel independente de dispositivo, o ícone scale * n
será usado. Se essa escala estiver ausente, outra imagem será redimensionada para o tamanho necessário.
Propriedades
- construtor
void
A função
constructor
tem esta aparência:(arg: SetIcon) => {...}
- arg
- retorna
-
- imageData
ImageData | objeto opcional
Um objeto
ImageData
ou um dicionário {size -> ImageData} que representa um ícone a ser definido. Se o ícone for especificado como um dicionário, a imagem usada será escolhida dependendo da densidade de pixels da tela. Se o número de pixels da imagem que cabem em uma unidade de espaço da tela for igual ascale
, uma imagem com tamanhoscale * n
será selecionada, em que n é o tamanho do ícone na interface. É necessário especificar pelo menos uma imagem. Observe quedetails.imageData = foo
é equivalente adetails.imageData = {'16': foo}
.
ShowAction
Uma ação de evento declarativa que define a action da barra de ferramentas da extensão como um estado ativado enquanto as condições correspondentes são atendidas. Esta ação pode ser usada sem permissões do host. Se a extensão tiver a permissão activeTab, clicar na ação da página concederá acesso à guia ativa.
Nas páginas em que as condições não são atendidas, a ação da barra de ferramentas da extensão será em escala de cinza e um clique abrirá o menu de contexto, em vez de acionar a ação.
Propriedades
- construtor
void
A função
constructor
tem esta aparência:(arg: ShowAction) => {...}
- arg
- retorna
-
ShowPageAction
Use declarativeContent.ShowAction
.
Uma ação de evento declarativa que define a ação de página da extensão como um estado ativado enquanto as condições correspondentes são atendidas. Esta ação pode ser usada sem permissões de host, mas a extensão precisa ter uma ação de página. Se a extensão tiver a permissão activeTab, clicar na ação da página concederá acesso à guia ativa.
Nas páginas em que as condições não são atendidas, a ação da barra de ferramentas da extensão será em escala de cinza e um clique abrirá o menu de contexto, em vez de acionar a ação.
Propriedades
- construtor
void
A função
constructor
tem esta aparência:(arg: ShowPageAction) => {...}
- arg
- retorna
-
Eventos
onPageChanged
Fornece a API Declarative Event, que consiste em addRules
, removeRules
e getRules
.