JavaScript API
Справочник по JavaScript API Cookiesh: чтение и изменение согласия, открытие баннера и центра настроек, синхронизация вошедших пользователей и настройка тега script.
Последнее обновление: 29 октября 2026 г.
JavaScript API позволяет вашему собственному коду читать и изменять согласие. Один и тот же API доступен двумя способами:
- Глобальный объект
Cookiesh, который создает тег script. Используйте его на обычных HTML-страницах и в консоли браузера. - Пакет
@cookiesh/js— типизированная обертка над глобальным объектом для приложений со сборщиком. Работает так же и включает определения TypeScript.
npm install @cookiesh/js
import { cookiesh } from '@cookiesh/js';
Пакет не загружает вторую копию Cookiesh. Он дожидается тега script и обращается к глобальному объекту. Во всех примерах ниже используется пакет, но Cookiesh.ready() и cookiesh.ready() ведут себя одинаково.
Состояние согласия
Большинство методов возвращают или принимают объект ConsentState:
interface ConsentState {
necessary: true;
preferences: boolean;
analytics: boolean;
marketing: boolean;
/** Как возникло текущее состояние. */
method: 'default' | 'banner' | 'preferences' | 'api' | 'gpc';
/** Случайный ID сохраненной записи о согласии или null до первого выбора. */
consentId: string | null;
/** Время выбора в формате ISO 8601 или null до первого выбора. */
timestamp: string | null;
bannerVersion: string;
/** Регион, по которому сработало правило, например "FR" или "US-CA". */
region: string;
}
Пока посетитель не сделал выбор, method равен default, а категории отражают состояние по умолчанию для его региона. В регионах с предварительным согласием это значит, что всё, кроме necessary, равно false.
Чтение согласия
ready()
ready(): Promise<ConsentState>
Выполняется, как только Cookiesh узнает состояние согласия: сразу для вернувшихся посетителей и после определения региона для новых. Метод не ждет, пока посетитель нажмет кнопку в баннере. Используйте его, чтобы запускать код, зависящий от согласия:
const consent = await cookiesh.ready();
if (consent.analytics) initAnalytics();
getConsent()
getConsent(): ConsentState | null
Синхронно возвращает текущее состояние или null, если Cookiesh еще не загрузился. Лучше используйте ready(), если вы не уверены, что скрипт уже загружен.
hasConsent(category)
hasConsent(category: 'necessary' | 'preferences' | 'analytics' | 'marketing'): boolean
Короткий способ проверить одну категорию. Возвращает false, пока Cookiesh не загрузился.
Изменение согласия
Эти методы сохраняют новую запись о согласии — точно так же, как если бы посетитель воспользовался баннером. Вызывайте их только в ответ на явное действие посетителя, например щелчок на вашей собственной странице настроек.
acceptAll(): Promise<ConsentState>
rejectAll(): Promise<ConsentState>
setConsent(choices: Partial<Record<'preferences' | 'analytics' | 'marketing', boolean>>): Promise<ConsentState>
// Собственный переключатель на странице настроек аккаунта
await cookiesh.setConsent({ analytics: event.target.checked });
Категории, которые вы не указали, сохраняют текущее значение. necessary изменить нельзя.
Показ интерфейса
showBanner(): void
openPreferences(): void
close(): void
showBanner() снова показывает баннер первого уровня, даже если посетитель уже сделал выбор. openPreferences() открывает центр настроек с переключателями по категориям и декларацией файлов cookie. close() закрывает любой из них без сохранения.
Вошедшие пользователи
По умолчанию согласие хранится отдельно для каждого браузера. В продуктах с авторизацией свяжите его с ID пользователя, чтобы выбор следовал за пользователем на всех устройствах:
identify(userId: string): Promise<ConsentState>
reset(): void
// После входа
await cookiesh.identify(session.user.id);
// После выхода
cookiesh.reset();
identify() находит последний выбор пользователя. Если он есть, Cookiesh применяет его на этом устройстве и не показывает баннер. Если посетитель сделал выбор до входа, этот выбор сохраняется для пользователя. Cookiesh хранит только хеш переданного ID с солью и никогда — сам ID. Используйте непрозрачный внутренний ID, а не адрес электронной почты.
reset() удаляет связь с пользователем, но сохраняет текущий выбор на этом устройстве.
Атрибуты тега script
Тег script настраивается атрибутами data-:
| Атрибут | По умолчанию | Описание |
|---|---|---|
data-site-id |
Обязателен | ID вашего сайта, например ck_live_8f2a91 |
data-language |
Автоматически | Принудительно задает язык баннера (см. Оформление баннера) |
data-auto-block |
true |
Укажите false, чтобы блокировать только скрипты, которые вы отметили сами |
data-nonce |
Нет | Nonce для CSP, который применяется к скриптам, разблокированным Cookiesh |
data-consent-mode |
true |
Укажите false, чтобы не отправлять сигналы Google Consent Mode |
Отладка
Cookiesh.debug(): void
Выполните в консоли браузера, чтобы вывести определенный регион, сработавшее правило, версию баннера, каждый заблокированный скрипт и текущее состояние всех категорий. Метод доступен только у глобального объекта.