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
Conceitos e uso
A API Declarative Content permite ativar 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 do 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 de "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 favorito
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
.