Hoppa till innehåll
Kom igång

JS API

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

Returnerar null om inget är sparat eller om den sparade posten har gått ut.

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

Den råa sparade posten – varje kategoris aktuella värde plus när det sattes. Returnerar null om den har gått ut eller inte finns. Användbar som revisionsspår (ansvarsskyldighet enligt artikel 7.1 i GDPR) – se GDPR-relaterade funktioner.

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 }
});

Körs vid varje framtida ändring, med hela posten (inte bara en enskild kategori).

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

Anropas aldrig vid avböjande.

gateScript({ src: '...', onLoad: () => {} }); // load a script only after consent
gateScript({ src: '...', category: 'analytics' }); // same, scoped to one category
Alternativ Typ Standard Beskrivning
src string — Obligatoriskt. Skriptets URL som laddas efter godkännande.
async boolean true Sätter script.async.
onLoad function — Anropas när skriptet har laddats.
category string 'all' Vilken kategori som måste godkännas för att lägga till det.

Lägger aldrig till skriptet förrän besökaren godkänner, och aldrig två gånger.

gateScript täcker inläsning av ett tredjepartsskript. För att visa eller dölja ditt eget gränssnitt baserat på samtycke – en widget, en ”hantera cookies”-länk, en platshållare för en inbäddning – kombinerar du getConsent() och onConsentChange() direkt. Det är exakt det mönster som ”analyswidgeten” på startsidan använder, som reagerar direkt när du ändrar bannern:

<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() vid laddning hanterar en återkommande besökare som redan har valt; onConsentChange() hanterar att hen ändrar sig senare via knappen för att öppna igen – båda behövs för att innehållet alltid ska stämma med det aktuella valet.

För en mer komplett version – en platshållare med en ”Aktivera”-knapp för ett inbäddat tredjepartsinnehåll – se Inaktivera enskilda widgetar.

Ett sparat val går ut efter expiryDays (365 som standard, konfigurerbart via propen expiryDays på <ConsentBanner /> eller alternativet expiryDays för getConsent/getConsentRecord) – därefter returnerar båda null igen och bannern visas vid nästa laddning.