# Riešenie problémov

> Najčastejšie zlyhania pri integrácii klienta – vložený checkout sa otvorí vo vyskakovacom okne, blokované okná, chýbajúce kontajnery a upozornenia v konzole.

Klient zaznamenáva všetko, čo hlási do konzoly prehliadača, s predponou `[Entase API]`. Najprv otvorte konzolu.

## Checkout sa otvorí vo vyskakovacom okne namiesto panela

Zvyčajné príčiny v poradí, v akom sa oplatí ich skontrolovať:

1. **Doména nie je dôveryhodný pôvod.** Pridajte ju v Nastavenia → Integrácie a zohľadnite predponu `www.`, ktorú váš web skutočne používa – pozrite si [Integrácie a prispôsobenie checkoutu](/organizers/settings/integrations-and-checkout-customization.md).
2. **Stránka nie je poskytovaná cez HTTPS.** Vložený checkout sa na nezabezpečenej stránke nikdy nepoužije.
3. **Chýba publikovateľný kľúč.** Bez `pk` klient nemôže overiť, či je vložený checkout povolený, preto zostane pri vyskakovacom okne.
4. **`book()` sa spustilo príliš skoro.** Kontrola povolenia je asynchrónna a dovtedy sa používa režim vyskakovacieho okna. Checkout otvorený automaticky pri načítaní stránky ju môže predbehnúť – pozrite si [Režimy checkoutu](/developers/js-client/checkout-modes.md).
5. **`connect-src` je blokované vašou politikou Content Security Policy**, takže sa kontrola nikdy nedokončí. Konzola zobrazí zablokovanú požiadavku.

`entase.getCheckoutMode()` hlási určený režim a je najrýchlejším spôsobom, ako odlíšiť problémy s konfiguráciou od problémov s časovaním.

## "Režim panelového checkoutu je povolený pre localhost"

Počas vývoja je to očakávané. Klient predpokladá režim panela na `localhost` a `127.0.0.1`, aby ste mohli vyvíjať s vloženým rozložením, a upozorňuje, pretože tento predpoklad nič nevypovedá o produkčnom prostredí. Pred nasadením pridajte svoju skutočnú doménu medzi dôveryhodné pôvody.

## Vyskakovacie okno je zablokované

Prehliadače povolia otvorenie okna iba počas akcie používateľa. Volajte `book()` synchrónne v obslužnej funkcii kliknutia, nie po `await`, `fetch` ani `setTimeout`. Pozrite si [Režimy checkoutu](/developers/js-client/checkout-modes.md).

## Panel sa otvorí prázdny

Iframe checkoutu bolo zablokované. Vo svojej direktíve Content Security Policy `frame-src` povoľte `https://www.entase.com` – pozrite si [Inštalácia klienta](/developers/js-client/installing-the-client.md).

## "Entase nie je definované"

Skript sa ešte nenačítal, keď sa spustil váš kód. Stáva sa to, keď je `client.js` načítaný s `async` alebo `defer`, prípadne je umiestnený za skriptom, ktorý ho používa. Počkajte na udalosť `entase:ready` – pozrite si [Inštalácia klienta](/developers/js-client/installing-the-client.md).

## "Pokus o rezerváciu udalosti po zničení klienta"

Na inštancii bolo zavolané `destroy()` a už ju nemožno ďalej používať. V jednostránkovej aplikácii to zvyčajne znamená, že komponent odstránil svojho klienta, zatiaľ čo zdieľaný odkaz zostal zachovaný. Pre nové zobrazenie vytvorte novú inštanciu.

## "Inicializácia rámca Entase zlyhala. Kontajner sa nenašiel."

Platí len pre vložený widget. Kód `obj` v konfigurácii nezodpovedá žiadnemu prvku na stránke. ID kontajnera musí byť `entase_`, za ktorým nasleduje rovnaký kód, a pred inicializáciou widgetu musí existovať v DOM – skontrolujte preklep alebo kontajner vykreslený neskôr vlastnými skriptmi.

## Spustí sa iba posledný poslucháč udalosti

`on()` uchováva jedno spätné volanie pre každý názov udalosti a registrácia ďalšieho nahradí prvé. Zaregistrujte sa raz a rozdeľte spracovanie v rámci tohto spätného volania – pozrite si [Udalosti](/developers/js-client/events.md).

## Vyskakovacie okno sa otvorí na nesprávnej obrazovke

Stredový bod sa vypočíta pri vytvorení inštancie a neaktualizuje sa, keď návštevník presunie okno prehliadača. Pred rezerváciou ho prepočítajte pomocou `setTopWindowCenter()` – pozrite si [Referenčný prehľad metód](/developers/js-client/methods.md).

## V objednávkach chýbajú sledovacie parametre

Samostatný klient nečíta URL vašej stránky. Parametre sami odošlite do `tprm` – pozrite si [Sledovanie a súhlas](/developers/js-client/tracking-and-consent.md). Upozorňujeme, že `setTracking()` nahrádza celý objekt namiesto zlúčenia s ním, takže neskoršie volanie môže bez upozornenia odstrániť skôr zadané parametre.
