Un ícono de página (abreviatura de "ícono de favoritos") es un pequeño ícono que se muestra en la barra de direcciones del navegador. Los íconos de página normalmente se usan para identificar y diferenciar sitios web. En este artículo, se describe cómo recuperar el favicon de un sitio web en una extensión de manifiesto v3.
Acceder al ícono de página de un sitio web
Para recuperar el favicon de un sitio web, debes crear la siguiente URL:
chrome-extension://EXTENSION_ID/_favicon/?pageUrl=EXAMPLE_URL&size=FAV_SIZE
EXTENSION_ID
- El ID de tu extensión.
EXAMPLE_URL
- La URL del sitio web del ícono de página.
FAV_SIZE
- Es el tamaño del ícono de página. El tamaño más común es de 16 × 16 píxeles.
En los siguientes pasos, se describe cómo crear esta URL en una extensión de Chrome:
Paso 1: Actualiza el manifiesto
Primero, debes solicitar el permiso "favicon"
en el manifiesto.
{
"name": "Favicon API in a popup",
"manifest_version": 3,
...
"permissions": ["favicon"],
...
}
Además, cuando se recuperan los íconos de favoritos en las secuencias de comandos de contenido, la carpeta "_favicon/*"
debe declararse como un recurso accesible a través de la Web. Por ejemplo:
{
"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": ["*"]
}
]
...
}
Paso 2: Crea la URL
La siguiente función usa runtime.getURL()
para crear una URL completamente calificada que dirija a la carpeta "_favicon/"
. Luego, muestra una cadena nueva que representa la URL con varios parámetros de consulta. Por último, la extensión agrega la imagen al cuerpo.
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 ejemplo es una URL de favicon de www.google.com
de 32 px que incluye un ID de extensión aleatorio:
chrome-extension://eghkbfdcoeikaepkldhfgphlaiojonpc/_favicon/?pageUrl=https%3A%2F%2Frp.liu233w.com%3A443%2Fhttps%2Fwww.google.com&size=32
Ejemplos de extensiones
Hay dos ejemplos de íconos de página en el repositorio chrome-extension-samples:
- Ejemplo de la ventana emergente del ícono de página.
- Ejemplo de secuencia de comandos de contenido de Favicon.