Ir al contenido
Empezar

API de JS

import {
getConsent,
getConsentRecord,
setConsent,
onConsentChange,
whenAccepted,
gateScript,
} from 'astro-cookie-consent';
getConsent(); // 'accept' | 'decline' | null — reads the 'all' category
getConsent('analytics'); // 'accept' | 'decline' | null for a specific category

Devuelve null si no hay nada guardado o si el registro guardado ha caducado.

getConsentRecord(); // { categories: {...}, timestamp } | null

El registro guardado en bruto: el valor actual de cada categoría y cuándo se estableció. Devuelve null si ha caducado o no existe. Útil como pista de auditoría (responsabilidad proactiva del art. 7.1 del RGPD); consulta Funciones relacionadas con el RGPD.

setConsent('accept'); // sets it programmatically and broadcasts the change
setConsent({ analytics: true, marketing: false }); // per-category form
onConsentChange((record) => {
// record.categories is the full map, e.g. { all: true }
// or { analytics: true, marketing: false }
});

Se ejecuta en cada cambio futuro, con el registro completo (no solo una categoría).

whenAccepted(() => {
/* fires immediately if already accepted, or once accepted */
});
whenAccepted(() => {
/* same, scoped to one category */
}, 'analytics');

Nunca se ejecuta si se rechaza.

gateScript({ src: '...', onLoad: () => {} }); // load a script only after consent
gateScript({ src: '...', category: 'analytics' }); // same, scoped to one category
Opción Tipo Por defecto Descripción
src string — Obligatoria. La URL del script que se carga tras aceptar.
async boolean true Establece script.async.
onLoad function — Se llama cuando el script ha cargado.
category string 'all' Qué categoría debe aceptarse para insertarlo.

Nunca inserta el script hasta que el visitante acepta, y nunca lo inserta dos veces.

gateScript se ocupa de cargar un script de terceros. Para mostrar u ocultar tu propia interfaz según el consentimiento (un widget, un enlace de “gestionar cookies”, un marcador de posición para un contenido incrustado), combina directamente getConsent() y onConsentChange(). Es exactamente el patrón que usa el “widget de analítica” de la página de inicio, que reacciona en directo mientras cambias el banner:

<div id="analytics-widget">Waiting for consent…</div>
<script>
import { getConsent, onConsentChange } from 'astro-cookie-consent';
const widget = document.getElementById('analytics-widget');
const render = (value: 'accept' | 'decline' | null) => {
if (!widget) return;
widget.textContent =
value === 'accept'
? 'Analytics widget — visible'
: value === 'decline'
? 'Hidden until you accept analytics'
: 'Waiting for consent…';
};
render(getConsent('analytics')); // set the initial state on load
onConsentChange(() => render(getConsent('analytics'))); // update on every change
</script>

getConsent() al cargar cubre al visitante que vuelve y ya eligió; onConsentChange() cubre que cambie de opinión más tarde con el botón para volver a abrir. Necesitas ambos para que el contenido coincida siempre con la elección actual.

Para una versión más completa (un marcador de posición con un botón “Activar” para un contenido incrustado de terceros), consulta Desactivar widgets individuales.

Una elección guardada caduca tras expiryDays (365 por defecto, configurable con el prop expiryDays de <ConsentBanner /> o con la opción expiryDays de getConsent/getConsentRecord). Después, ambas funciones vuelven a devolver null y el banner reaparece en la siguiente carga.