Оформление заказа сообщает вашей странице о своих действиях. Подпишитесь с помощью on():
entase.on('checkout.ready', payload => {
console.log('checkout open for', payload.context.eventID);
});Один обработчик на имя события
on() сохраняет один обратный вызов для каждого имени события. Регистрация второго обратного вызова с тем же именем заменяет первый – она не добавляется к нему:
entase.on('checkout.closed', a);
entase.on('checkout.closed', b); // a is gone; only b runsoff() удаляет всё, что зарегистрировано для имени. Он игнорирует любой переданный ему обратный вызов, поэтому off('checkout.closed', b) и off('checkout.closed') делают одно и то же.
Если нескольким частям вашей страницы нужно реагировать на одно и то же событие, зарегистрируйте один обратный вызов и распределяйте обработку внутри него.
Подписка на несколько событий одновременно
Оба метода принимают строку с именами, разделёнными пробелами, или массив имён и регистрируют один и тот же обратный вызов для каждого из них:
entase.on('checkout.ready checkout.closed', payload => {
console.log(payload.name);
});
entase.off(['checkout.ready', 'checkout.closed']);Полезная нагрузка
Каждый обратный вызов получает один объект:
| Поле | Тип | Описание |
|---|---|---|
name | string | Имя события; полезно, когда один обратный вызов обрабатывает несколько событий. |
context | object | Содержит eventID – событие, к которому относится это оформление заказа. |
data | object | Сведения, специфичные для события. |
Доступные события
| Имя | Когда срабатывает |
|---|---|
checkout.ready | Оформление заказа загружено и готово к взаимодействию. В этот момент клиент также получает переданный вами в book() clientContext. |
checkout.closed | Оформление заказа закрыто. Клиент удаляет панель или окно и очищает фон. |
checkout.consent | Посетитель ответил на уведомление об условиях. data.consent имеет значение true, если он принял условия, и клиент запоминает это, чтобы в следующий раз пропустить этот шаг. |
entase.on('checkout.closed', () => {
document.body.classList.remove('checkout-open');
});
entase.on('checkout.consent', payload => {
if (payload.data.consent) console.log('terms accepted');
});Обработчики сохраняются между отдельными бронированиями
Обработчики принадлежат экземпляру, а не бронированию. Зарегистрируйте их один раз после создания клиента, и они будут применяться к каждому вызову book(). Используйте payload.context.eventID, чтобы различать бронирования:
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' });
entase.on('checkout.closed', payload => {
refreshAvailability(payload.context.eventID);
});Вызов destroy() останавливает их все – экземпляр полностью перестаёт прослушивать сообщения от оформления заказа.
Сообщения из других источников игнорируются
Клиент принимает сообщения только из источника оформления заказа Entase, поэтому несвязанный трафик postMessage на вашей странице никогда не попадёт в ваши обратные вызовы.