Um favicon (abreviação de "ícone de favorito") é um pequeno ícone que aparece na barra de endereço do navegador. Os favicons normalmente são usados para identificar e diferenciar sites. Este artigo descreve como recuperar o favicon de um site em uma extensão do Manifest V3.
Como acessar o favicon de um site
Para recuperar o ícone de um site, você precisa criar o seguinte URL:
chrome-extension://EXTENSION_ID/_favicon/?pageUrl=EXAMPLE_URL&size=FAV_SIZE
EXTENSION_ID
- O ID da sua extensão.
EXAMPLE_URL
- É o URL do site do favicon.
FAV_SIZE
- O tamanho do ícone. O tamanho mais comum é 16 x 16 pixels.
As etapas a seguir descrevem como construir esse URL em uma extensão do Chrome:
Etapa 1: atualizar o manifesto
Primeiro, é necessário solicitar a permissão "favicon"
no manifesto.
{ "name": "Favicon API in a popup", "manifest_version": 3, ... "permissions": ["favicon"], ... }
Além disso, ao buscar favicons em scripts de conteúdo, a pasta "_favicon/*"
precisa ser declarada como um recurso acessível na Web. Exemplo:
{ "name": "Favicon API in content scripts", "manifest_version": 3, "content_scripts": [ { "matches": ["<all_urls>"], "js": ["content.js"] } ], "permissions": ["favicon"], "web_accessible_resources": [ { "resources": ["_favicon/*"], "matches": ["<all_urls>"], "extension_ids": ["*"] } ] ... }
Etapa 2: criar o URL
A função a seguir usa runtime.getURL()
para criar um URL totalmente qualificado que aponta para a pasta "_favicon/"
. Em seguida, ele retorna uma nova string que representa o URL com vários parâmetros de consulta. Por fim, a extensão anexa a imagem ao corpo.
function faviconURL(u) { const url = new URL(chrome.runtime.getURL("/_favicon/")); url.searchParams.set("pageUrl", u); url.searchParams.set("size", "32"); return url.toString(); } const img = document.createElement('img'); img.src = faviconURL("https://www.google.com") document.body.appendChild(img);
Este exemplo é um URL de favicon de 32 pixels www.google.com
que inclui um ID de extensão aleatório:
chrome-extension://eghkbfdcoeikaepkldhfgphlaiojonpc/_favicon/?pageUrl=https%3A%2F%2Fwww.google.com&size=32
Exemplos de extensões
Há dois exemplos de favicon no repositório chrome-extension-samples:
- Exemplo de pop-up de favicon.
- Exemplo de script de conteúdo do favicon.