Descrição
Use a API chrome.contentSettings
para mudar as configurações que controlam se os sites podem usar recursos como cookies, JavaScript e plug-ins. De modo geral, as configurações de conteúdo permitem personalizar o comportamento do Chrome em cada site, em vez de globalmente.
Permissões
contentSettings
Você precisa declarar a permissão "contentSettings"
no manifesto da extensão para usar a API. Por
exemplo:
{
"name": "My extension",
...
"permissions": [
"contentSettings"
],
...
}
Conceitos e uso
Padrões de configuração de conteúdo
Você pode usar padrões para especificar os sites afetados por cada configuração de conteúdo. Por exemplo, https://*.youtube.com/*
especifica youtube.com e todos os subdomínios dele. A sintaxe dos padrões de configuração de conteúdo é a mesma dos padrões de correspondência, com algumas diferenças:
- Para URLs
http
,https
eftp
, o caminho precisa ser um caractere curinga (/*
). Para URLsfile
, o caminho precisa ser totalmente especificado e não pode conter caracteres curinga. - Ao contrário dos padrões de correspondência, os padrões de configuração de conteúdo podem especificar um número de porta. Se um número de porta for especificado, o padrão só vai corresponder a sites com essa porta. Se nenhum número de porta for especificado, o padrão vai corresponder a todas as portas.
Precedência de padrões
Quando mais de uma regra de configuração de conteúdo se aplica a um determinado site, a regra com o padrão mais específico tem precedência.
Por exemplo, os seguintes padrões são ordenados por precedência:
https://www.example.com/*
https://*.example.com/*
(correspondente a example.com e todos os subdomínios)<all_urls>
(correspondência com todos os URLs)
Três tipos de caracteres curinga afetam a especificidade de um padrão:
- Caracteres curinga na porta (por exemplo,
https://www.example.com:*/*
) - Caracteres curinga no esquema (por exemplo,
*://www.example.com:123/*
) - Caracteres curinga no nome de host (por exemplo,
https://*.example.com:123/*
)
Se um padrão for mais específico que outro em uma parte, mas menos específico em outra, as diferentes partes serão verificadas na seguinte ordem: nome do host, esquema, porta. Por exemplo, os seguintes padrões são ordenados por precedência:
https://www.example.com:*/*
Especifica o nome do host e o esquema.*:/www.example.com:123/*
Não tão alta, porque, embora especifique o nome do host, não especifica o esquema.https://*.example.com:123/*
Mais baixa porque, embora especifique a porta e o esquema, tem um caractere curinga no nome do host.
Padrões primários e secundários
O URL considerado ao decidir qual configuração de conteúdo aplicar depende do tipo de conteúdo.
Por exemplo, as configurações de contentSettings.notifications
são baseadas no URL mostrado na
omnibox. Esse URL é chamado de "principal".
Alguns tipos de conteúdo podem considerar outros URLs. Por exemplo, se um site pode definir um contentSettings.cookies
, isso é decidido com base no URL da solicitação HTTP (que é o URL principal nesse caso) e no URL mostrado na omnibox (chamado de URL "secundário").
Se várias regras tiverem padrões primários e secundários, a regra com o padrão primário mais específico terá precedência. Se várias regras tiverem o mesmo padrão principal, a regra com o padrão secundário mais específico terá precedência. Por exemplo, a lista a seguir de pares de padrões primários/secundários é ordenada por precedência:
Precedência | Padrão principal | Padrão secundário |
---|---|---|
1 | https://www.moose.com/* , | https://www.wombat.com/* |
2 | https://www.moose.com/* , | <all_urls> |
3 | <all_urls> , | https://www.wombat.com/* |
4 | <all_urls> , | <all_urls> |
Não há suporte para padrões secundários na configuração de conteúdo de imagens.
Identificadores de recursos
Os identificadores de recursos permitem especificar configurações de conteúdo para subtipos específicos de um tipo de conteúdo.
No momento, o único tipo de conteúdo que aceita identificadores de recursos é contentSettings.plugins
,
em que um identificador de recurso identifica um plug-in específico. Ao aplicar as configurações de conteúdo, primeiro as configurações do plug-in específico são verificadas. Se não houver configurações para o plug-in específico, as configurações gerais de conteúdo para plug-ins serão verificadas.
Por exemplo, se uma regra de configuração de conteúdo tiver o identificador de recurso adobe-flash-player
e o padrão <all_urls>
, ela terá precedência sobre uma regra sem um identificador de recurso e o padrão https://www.example.com/*
, mesmo que esse padrão seja mais específico.
Para receber uma lista de identificadores de recursos de um tipo de conteúdo, chame o método
contentSettings.ContentSetting.getResourceIdentifiers()
. A lista retornada pode mudar com o conjunto de plug-ins instalados na máquina do usuário, mas o Chrome tenta manter os identificadores estáveis nas atualizações de plug-ins.
Exemplos
Para testar essa API, instale o exemplo da API contentSettings do repositório chrome-extension-samples (link em inglês).
Tipos
AutoVerifyContentSetting
Enumeração
"allow"
"block"
CameraContentSetting
Enumeração
"allow"
"block"
"ask"
ClipboardContentSetting
Enumeração
"allow"
"block"
"ask"
ContentSetting
Propriedades
-
limpar
void
Limpa todas as regras de configuração de conteúdo definidas por essa extensão.
A função
clear
é assim:(details: object) => {...}
-
detalhes
objeto
-
escopo
Escopo opcional
Onde limpar a configuração (padrão: regular).
-
-
retorna
Promessa<void>
Chrome 96+
-
-
get
void
Recebe a configuração de conteúdo atual para um determinado par de URLs.
A função
get
é assim:(details: object) => {...}
-
detalhes
objeto
-
navegação anônima
booleano opcional
Se as configurações de conteúdo de uma sessão anônima devem ser verificadas. (padrão "falso")
-
primaryUrl
string
O URL principal para o qual a configuração de conteúdo deve ser recuperada. O significado de uma URL principal depende do tipo de conteúdo.
-
resourceIdentifier
ResourceIdentifier opcional
Um identificador mais específico do tipo de conteúdo para o qual as configurações devem ser recuperadas.
-
secondaryUrl
string opcional
O URL secundário para o qual a configuração de conteúdo precisa ser recuperada. O padrão é o URL principal. O significado de um URL secundário depende do tipo de conteúdo, e nem todos os tipos de conteúdo usam URLs secundários.
-
-
retorna
Promise<object>
Chrome 96+
-
-
getResourceIdentifiers
void
A função
getResourceIdentifiers
é assim:() => {...}
-
retorna
Promise<ResourceIdentifier[]>
Chrome 96+
-
-
set
void
Aplica uma nova regra de configuração de conteúdo.
A função
set
é assim:(details: object) => {...}
-
detalhes
objeto
-
primaryPattern
string
O padrão do URL principal. Para detalhes sobre o formato de um padrão, consulte Padrões de configuração de conteúdo.
-
resourceIdentifier
ResourceIdentifier opcional
O identificador de recurso para o tipo de conteúdo.
-
escopo
Escopo opcional
Onde definir a configuração (padrão: regular).
-
secondaryPattern
string opcional
O padrão do URL secundário. O padrão é corresponder a todos os URLs. Para detalhes sobre o formato de um padrão, consulte Padrões de configuração de conteúdo.
-
Configuração
qualquer
A configuração aplicada por esta regra. Consulte a descrição dos objetos ContentSetting individuais para conferir os valores possíveis.
-
-
retorna
Promessa<void>
Chrome 96+
-
CookiesContentSetting
Enumeração
"allow"
"block"
"session_only"
FullscreenContentSetting
Valor
"allow"
ImagesContentSetting
Enumeração
"allow"
"block"
JavascriptContentSetting
Enumeração
"allow"
"block"
LocationContentSetting
Enumeração
"allow"
"block"
"ask"
MicrophoneContentSetting
Enumeração
"allow"
"block"
"ask"
MouselockContentSetting
Valor
"allow"
MultipleAutomaticDownloadsContentSetting
Enumeração
"allow"
"block"
"ask"
NotificationsContentSetting
Enumeração
"allow"
"block"
"ask"
PluginsContentSetting
Valor
"block"
PopupsContentSetting
Enumeração
"allow"
"block"
PpapiBrokerContentSetting
Valor
"block"
ResourceIdentifier
O único tipo de conteúdo que usa identificadores de recursos é contentSettings.plugins
. Para mais informações, consulte