dokumentacja · dla deweloperów

API runtime

Wszystko, co potrafi baner, da się oskryptować. Runtime udostępnia jeden global, emituje pięć zdarzeń i nie renderuje żadnego UI, jeśli wolisz zbudować własne.

Global

window.CookieCrumbs.ready.then(() => {
  const choice = window.CookieCrumbs.get();
  // { necessary: true, analytics: false, … } or null before any decision
});
SkładnikCo robi
readyPromise rozwiązywany po załadowaniu konfiguracji i stanu.
get()Aktualna mapa kategorii albo null przed decyzją.
set(partial)Scal i zapisz decyzję programowo.
acceptAll() / rejectAll()Zapisz pełną zgodę lub odmowę.
withdraw()Zapisz wycofanie (wszystko wyłączone, oznaczone jako wycofane).
open(layer?) / close()Otwórz baner (warstwa 2 to panel ustawień) albo go ukryj.
consentId()Pseudonimowy identyfikator zgody odwiedzającego albo null.
version() / regime() / country() / lang()Numer działającej wersji, rozstrzygnięty reżim, wykryty kraj i aktywny język.
setLang(tag)Przełącz język banera (musi być skonfigurowany).
declaration(el?, lang?)Wyrenderuj deklarację cookies w elemencie (domyślnie: pierwszy [data-cc-declaration]).
declarationUrl(lang?)Adres hostowanej deklaracji.
myConsent()Własny zapisany rekord odwiedzającego, na stronę „moja zgoda”.
on(event, cb) / off(event, cb)Subskrybuj zdarzenia.
sdkCiąg wersji runtime.

Zdarzenia

Pięć zdarzeń: ready, show (otwarto warstwę), decision, update (zmieniony wybór) i withdraw. Zdarzenia z rodziny decyzji niosą { categories, type, consentId, regime }.

Element ponownego otwarcia

Każdy element z data-cc-open ponownie otwiera baner: <a href="#" data-cc-open>Ustawienia cookies</a>. Odwiedzający muszą zawsze mieć drogę powrotu; jeśli wyłączysz pływający przycisk, ten link jest wymagany.

Tryb headless

W układzie Headless nie jest renderowany żaden baner. Ty budujesz interfejs i sterujesz nim w całości przez to API; blokowanie, dziennik zgód, reżimy i Consent Mode nadal działają pod spodem.

Jak naprawdę działa blokowanie i uwalnianie

Interceptor instaluje się synchronicznie, przed pobraniem konfiguracji. Otagowane skrypty (type="text/plain" z data-cc-category) oraz nieotagowane skrypty lub iframe’y, których host pasuje do opublikowanej mapy blokowania, są trzymane w DOM w zneutralizowanej formie, a potem odtwarzane w kolejności dokumentu, gdy tylko ich kategoria zostanie przyznana. Węzły raz uwolnione nigdy nie są ponownie neutralizowane.

Kod osadzenia po zgodzie

Tracker zarejestrowany w panelu może mieć własny kod osadzenia. Przy publikacji jest on kompilowany do konfiguracji, a runtime uruchamia każdy wpis dokładnie raz, gdy jego kategoria zostanie przyznana, w chwili decyzji lub przy późniejszej wizycie z zapisaną zgodą. Kodu, który już się wykonał, nie da się cofnąć wycofaniem zgody; po prostu nie uruchamia się ponownie przy następnym załadowaniu strony.

Stan, uczciwie

Decyzja mieszka w jednym cookie first-party, cc_consent (SameSite=Lax, Secure na https), więc przeżywa przeładowania. Zdarzenia zgody kolejkują się w localStorage["cc:q"] i są wysyłane do endpointu zgód, z awaryjnym sendBeacon przy zamykaniu strony; kolejka jest czyszczona tylko po sukcesie, więc nieudane dostarczenie jest powtarzane przy następnym załadowaniu. Obok rekordu zgody nie jest przechowywany adres IP, user agent ani adres strony.