Перейти к содержимому

Язык

Меню документации

События

Подписывайтесь на события согласия и баннера Cookiesh из JavaScript, через DOM или в Google Tag Manager: передаваемые данные и примеры для каждого события.

Последнее обновление: 29 октября 2026 г.

Вместо того чтобы опрашивать файлы cookie, подпишитесь на события. Cookiesh отправляет одни и те же события тремя способами, поэтому слушать их можно там, где живет ваш код:

  • JavaScript API: cookiesh.on(name, handler).
  • События DOM на window с префиксом cookiesh:.
  • Записи в dataLayer для Google Tag Manager.

Подписка

on(event: string, handler: (detail) => void): () => void
off(event: string, handler: (detail) => void): void

on() возвращает функцию, которая удаляет обработчик:

import { cookiesh } from '@cookiesh/js';

const stop = cookiesh.on('consent:updated', ({ categories, changed }) => {
  if (changed.includes('analytics')) analytics.setEnabled(categories.analytics);
});

// Позже, например при размонтировании компонента
stop();

Если вы подписываетесь на consent:ready после того, как оно уже произошло, обработчик сразу вызывается с текущим состоянием. О порядке загрузки можно не беспокоиться.

Справочник событий

Событие Когда происходит Данные (detail)
consent:ready Один раз на странице, когда состояние согласия известно { categories, method, region }
consent:updated Каждый раз, когда посетитель или ваш код сохраняет новый выбор { categories, changed, method, consentId }
banner:shown Появляется баннер первого уровня { bannerVersion, region }
banner:hidden Баннер закрывается, с выбором или без { reason }
preferences:opened Открывается центр настроек {}
preferences:closed Закрывается центр настроек { saved }
script:unblocked Cookiesh запускает скрипт или загружает iframe, который он удерживал { category, src }

В этих данных:

  • categories — объект с логическим значением для каждой категории: { necessary, preferences, analytics, marketing }.
  • changed перечисляет категории, значение которых изменилось, например ['analytics'].
  • method — одно из значений default, banner, preferences, api или gpc.
  • reason — accepted, rejected, saved или closed.

События DOM

Каждое событие также отправляется на window в виде CustomEvent. Это удобно для скриптов, которые не импортируют пакет:

<script>
  window.addEventListener('cookiesh:consent:updated', (event) => {
    console.log('New choice', event.detail.categories);
  });
</script>

Google Tag Manager

Cookiesh отправляет в dataLayer два события, на которых можно строить триггеры:

{
  event: 'cookiesh_consent_ready',
  cookiesh: { necessary: true, preferences: false, analytics: true, marketing: false, method: 'banner' }
}

{
  event: 'cookiesh_consent_updated',
  cookiesh: { necessary: true, preferences: true, analytics: true, marketing: false, method: 'preferences' }
}

Создайте триггер Custom Event на cookiesh_consent_updated и переменную Data Layer Variable для cookiesh.marketing, чтобы теги не от Google срабатывали только после согласия. Тегам Google это не нужно: они читают сигналы Consent Mode, которые Cookiesh отправляет автоматически.

Серверные события

Эти события выполняются в браузере посетителя. Чтобы получать изменения согласия на своем сервере, например для синхронизации с CRM, используйте вебхуки.