Checkout otwiera się w jednym z dwóch trybów.
Panel to osadzony panel renderowany na Twojej stronie. Na komputerze stacjonarnym wysuwa się z prawej strony, do maksymalnej szerokości pane.width; na urządzeniach mobilnych wysuwa się od dołu. Odwiedzający pozostaje na Twojej stronie, a panel zamyka się po naciśnięciu klawisza Escape lub kliknięciu przyciemnionego obszaru.
Wyskakujące okno to osobne okno przeglądarki, wyśrodkowane na ekranie odwiedzającego. Klient monitoruje zamknięcie okna, aby móc usunąć tło.
Osadzony checkout wymaga zaufanego źródła
Tryb Panel renderuje checkout Entase w elemencie iframe w Twojej domenie, dlatego jest dozwolony tylko w domenach, które zostały przez Ciebie wyraźnie autoryzowane. Dodaj każdą domenę, z której otwierasz checkout, do Zaufanych źródeł w Ustawienia → Integracje – zobacz Integracje i dostosowywanie checkoutu.
To, czy prefiks www. jest uwzględniony, ma znaczenie. Jeśli nie masz pewności, z której wersji korzysta Twoja witryna, dodaj obie.
Jeśli Twojej domeny nie ma na liście, checkout nadal działa – po prostu otwiera się jako wyskakujące okno.
Jak rozwiązywana jest wartość 'auto'
Przy domyślnym ustawieniu checkoutMode: 'auto' klient podejmuje decyzję w następującej kolejności:
- Brak HTTPS → wyskakujące okno. Osadzony checkout nigdy nie jest używany na niezabezpieczonej stronie.
localhostlub127.0.0.1→ panel, z ostrzeżeniem zapisanym w konsoli. To ułatwienie dla programistów, dzięki któremu możesz tworzyć rozwiązanie z użyciem osadzonego układu; nie mówi ono nic o tym, czy Twoja domena produkcyjna jest dozwolona.- W pozostałych przypadkach → klient pyta Entase, czy to źródło może używać osadzonego checkoutu, wysyłając
pkw celu identyfikacji konta. Jeśli odpowiedź zawiera pane, tryb zmienia się na panel.
Do czasu otrzymania odpowiedzi trybem jest popup. To zachowanie najczęściej zaskakuje: sprawdzenie jest asynchroniczne, więc wywołanie book() uruchomione natychmiast po załadowaniu strony – zanim odwiedzający zdąży cokolwiek kliknąć – może nadal otworzyć wyskakujące okno nawet w doskonale skonfigurowanej domenie. W praktyce rzeczywiste kliknięcie zawsze następuje długo po zakończeniu sprawdzenia. Jeśli otwierasz checkout automatycznie, wymuś tryb zamiast polegać na wykrywaniu.
Wymuszanie trybu
Ustaw jawnie checkoutMode, aby całkowicie pominąć wykrywanie:
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY', checkoutMode: 'popup' });Możesz też zastąpić go dla pojedynczej rezerwacji:
entase.book('EVENT_ID', { checkoutMode: 'popup' });Wymuszenie 'pane' w domenie, która nie jest zaufanym źródłem, nie nadaje uprawnień – panel się otworzy, ale checkout w nim nie będzie mógł komunikować się z Twoją stroną. Używaj 'popup' jako świadomego wyboru, a 'auto' pozostaw włączone, gdy chcesz korzystać z osadzonego checkoutu wszędzie tam, gdzie jest dozwolony.
Nierozpoznana wartość jest ignorowana i traktowana jako 'auto'.
Odczytywanie i zmienianie trybu w czasie działania
entase.getCheckoutMode(); // 'pane' or 'popup' — never 'auto'
entase.setCheckoutMode('popup'); // applies to every later book() callgetCheckoutMode() zwraca rozwiązany tryb, więc wskazuje, co faktycznie się wydarzy. Ustawienie trybu z powrotem na 'auto' ponownie uruchamia wykrywanie.
Blokowanie wyskakujących okien
Przeglądarki zezwalają na window.open() tylko podczas działania użytkownika. Wywołaj book() bezpośrednio w procedurze obsługi kliknięcia – nie po await, fetch ani setTimeout, ponieważ w tym momencie działanie użytkownika już wygasło i wyskakujące okno zostanie zablokowane.
// Blocked: the gesture is gone by the time book() runs.
button.addEventListener('click', async () => {
const event = await fetch('/api/current-event').then(r => r.json());
entase.book(event.id);
});
// Fine: resolve the id first, open on the click.
button.addEventListener('click', () => entase.book(button.dataset.eventId));Dotyczy to wyłącznie trybu wyskakującego okna. Tryb Panel tworzy element na stronie i nie podlega temu ograniczeniu.