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ładnik | Co robi |
|---|---|
ready | Promise 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. |
sdk | Cią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.