API de JS
import { getConsent, getConsentRecord, setConsent, onConsentChange, whenAccepted, gateScript,} from 'astro-cookie-consent';getConsent(category?, options?)
Sección titulada «getConsent(category?, options?)»getConsent(); // 'accept' | 'decline' | null — reads the 'all' categorygetConsent('analytics'); // 'accept' | 'decline' | null for a specific categoryDevuelve null si no hay nada guardado o si el registro guardado ha caducado.
getConsentRecord(options?)
Sección titulada «getConsentRecord(options?)»getConsentRecord(); // { categories: {...}, timestamp } | nullEl 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(value)
Sección titulada «setConsent(value)»setConsent('accept'); // sets it programmatically and broadcasts the changesetConsent({ analytics: true, marketing: false }); // per-category formonConsentChange(callback)
Sección titulada «onConsentChange(callback)»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(callback, category?)
Sección titulada «whenAccepted(callback, category?)»whenAccepted(() => { /* fires immediately if already accepted, or once accepted */});whenAccepted(() => { /* same, scoped to one category */}, 'analytics');Nunca se ejecuta si se rechaza.
gateScript(options)
Sección titulada «gateScript(options)»gateScript({ src: '...', onLoad: () => {} }); // load a script only after consentgateScript({ 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.
Mostrar contenido de forma condicional
Sección titulada «Mostrar contenido de forma condicional»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.
Caducidad
Sección titulada «Caducidad»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.