JS API
import { getConsent, getConsentRecord, setConsent, onConsentChange, whenAccepted, gateScript,} from 'astro-cookie-consent';getConsent(category?, options?)
Section titled “getConsent(category?, options?)”getConsent(); // 'accept' | 'decline' | null — reads the 'all' categorygetConsent('analytics'); // 'accept' | 'decline' | null for a specific categoryReturnerar null om inget är sparat eller om den sparade posten har gått ut.
getConsentRecord(options?)
Section titled “getConsentRecord(options?)”getConsentRecord(); // { categories: {...}, timestamp } | nullDen 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(value)
Section titled “setConsent(value)”setConsent('accept'); // sets it programmatically and broadcasts the changesetConsent({ analytics: true, marketing: false }); // per-category formonConsentChange(callback)
Section titled “onConsentChange(callback)”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(callback, category?)
Section titled “whenAccepted(callback, category?)”whenAccepted(() => { /* fires immediately if already accepted, or once accepted */});whenAccepted(() => { /* same, scoped to one category */}, 'analytics');Anropas aldrig vid avböjande.
gateScript(options)
Section titled “gateScript(options)”gateScript({ src: '...', onLoad: () => {} }); // load a script only after consentgateScript({ 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.
Visa innehåll villkorligt
Section titled “Visa innehåll villkorligt”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.
Utgång
Section titled “Utgång”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.