Een favicon (afkorting van 'favorite icon') is een klein icoon dat in de adresbalk van de browser wordt getoond. Favicons worden meestal gebruikt om websites te identificeren en van elkaar te onderscheiden. In dit artikel wordt beschreven hoe je het favicon van een website ophaalt in een Manifest V3-extensie.
Toegang tot de favicon van een website
Als je de favicon van een website wilt ophalen, maak je de volgende URL:
chrome-extension://EXTENSION_ID/_favicon/?pageUrl=EXAMPLE_URL&size=FAV_SIZE
EXTENSION_ID- De ID van je extensie.
EXAMPLE_URL- De URL van de website van de favicon.
FAV_SIZE- De grootte van het favicon. Het meest voorkomende formaat is 16 x 16 pixels.
In de volgende stappen staat hoe je deze URL maakt in een Chrome-extensie:
Stap 1: Update het manifest
Vraag eerst het recht "favicon" aan in het manifest.
{
"name": "Favicon API in a popup",
"manifest_version": 3,
...
"permissions": ["favicon"],
...
}
Favicons worden behandeld als bronnen onder de oorsprong van je extensie. Als je ze wilt blootstellen aan het web, ook als je ze in een webpagina injecteert vanuit een contentscript, moet je ze declareren als bronnen die toegankelijk zijn via het web. Voorbeeld:
{
"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": ["*"]
}
]
...
}
Stap 2: Maak de URL
De volgende functie gebruikt runtime.getURL() om een volledig gekwalificeerde URL te maken die naar de map "_favicon/" verwijst. Daarna wordt een nieuwe tekenreeks geretourneerd die de URL met verschillende queryparameters vertegenwoordigt. Tot slot voegt de extensie de afbeelding toe aan de hoofdtekst.
function faviconURL(u) {
const url = new URL(browser.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);
Dit voorbeeld is een favicon-URL van www.google.com 32 px die een willekeurige extensie-ID bevat:
chrome-extension://eghkbfdcoeikaepkldhfgphlaiojonpc/_favicon/?pageUrl=https%3A%2F%2Fwww.google.com&size=32
Voorbeelden van extensies
Er zijn 2 favicon-voorbeelden in de repository chrome-extension-samples:
- Voorbeeld van een favicon-pop-up.
- Voorbeeld van een content script voor een favicon.