O checkout comunica à sua página o que está a fazer. Subscreva com on():
entase.on('checkout.ready', payload => {
console.log('checkout open for', payload.context.eventID);
});Um listener por nome de evento
on() armazena um callback por nome de evento. Registar um segundo callback para o mesmo nome substitui o primeiro – não o adiciona:
entase.on('checkout.closed', a);
entase.on('checkout.closed', b); // a is gone; only b runsoff() remove tudo o que estiver registado para um nome. Ignora qualquer callback que lhe seja passado, pelo que off('checkout.closed', b) e off('checkout.closed') fazem o mesmo.
Se várias partes da sua página precisarem de reagir ao mesmo evento, registe um callback e distribua a partir do seu interior.
Subscrever vários eventos de uma só vez
Ambos os métodos aceitam uma string com nomes separados por espaços ou um array de nomes, registando o mesmo callback para cada um:
entase.on('checkout.ready checkout.closed', payload => {
console.log(payload.name);
});
entase.off(['checkout.ready', 'checkout.closed']);O payload
Cada callback recebe um objeto:
| Campo | Tipo | Descrição |
|---|---|---|
name | string | O nome do evento, útil quando um callback processa vários. |
context | object | Contém eventID – o evento ao qual este checkout pertence. |
data | object | Detalhe específico do evento. |
Eventos disponíveis
| Nome | Quando é acionado |
|---|---|
checkout.ready | O checkout foi carregado e está pronto para interação. É também nesta altura que o cliente transmite o clientContext que passou a book(). |
checkout.closed | O checkout foi encerrado. O cliente desmonta o painel ou a janela e limpa o fundo. |
checkout.consent | O visitante respondeu ao aviso sobre os termos. data.consent é true quando os aceitou, e o cliente guarda essa informação para que o passo seja ignorado da próxima vez. |
entase.on('checkout.closed', () => {
document.body.classList.remove('checkout-open');
});
entase.on('checkout.consent', payload => {
if (payload.data.consent) console.log('terms accepted');
});Os listeners sobrevivem a reservas individuais
Os listeners pertencem à instância, não a uma reserva. Registe-os uma vez, depois de criar o cliente, e aplicam-se a todas as chamadas a book(). Utilize payload.context.eventID para distinguir as reservas:
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' });
entase.on('checkout.closed', payload => {
refreshAvailability(payload.context.eventID);
});Chamar destroy() interrompe todos – a instância deixa completamente de escutar mensagens do checkout.
As mensagens de outras origens são ignoradas
O cliente só aceita mensagens da origem do checkout da Entase, pelo que tráfego postMessage não relacionado na sua página nunca chegará aos seus callbacks.