# Rešavanje problema

> Najčešći problemi pri integraciji klijenta – ugrađeni checkout koji se vraća na iskačući prozor, blokirani prozori, nedostajući kontejneri i upozorenja u konzoli.

Klijent sve što prijavi beleži u konzoli pregledača, sa prefiksom `[Entase API]`. Najpre otvorite konzolu.

## Checkout se otvara kao iskačući prozor umesto kao panel

Uobičajeni uzroci, redom kojim ih vredi proveriti:

1. **Domen nije pouzdano poreklo.** Dodajte ga u Podešavanja → Integracije, uz isti prefiks `www.` koji vaš sajt zaista koristi – pogledajte [Integracije i prilagođavanje checkouta](/organizers/settings/integrations-and-checkout-customization.md).
2. **Stranica se ne prikazuje preko HTTPS-a.** Ugrađeni checkout se nikada ne koristi na nebezbednoj stranici.
3. **Nema javnog ključa.** Bez `pk` klijent ne može da proveri da li je ugrađeni checkout dozvoljen, pa ostaje pri iskačućem prozoru.
4. **`book()` je pokrenut prerano.** Provera dozvole je asinhrona, a režim je iskačući prozor dok ne stigne odgovor. Checkout koji se automatski otvara pri učitavanju stranice može je preduhitriti – pogledajte [Režimi checkouta](/developers/js-client/checkout-modes.md).
5. **`connect-src` je blokiran vašom politikom bezbednosti sadržaja**, pa se provera nikada ne završi. Konzola će prikazati blokirani zahtev.

`entase.getCheckoutMode()` prijavljuje utvrđeni režim i najbrži je način da razlikujete probleme s konfiguracijom od problema s vremenskim usklađivanjem.

## "Režim checkouta u panelu je omogućen za localhost"

Očekivano tokom razvoja. Klijent pretpostavlja režim panela na `localhost` i `127.0.0.1` kako biste mogli da razvijate uz ugrađeni raspored, i prikazuje upozorenje jer ta pretpostavka ne govori ništa o produkciji. Dodajte stvarni domen u pouzdana porekla pre objavljivanja.

## Iskačući prozor je blokiran

Pregledači dozvoljavaju otvaranje prozora samo tokom radnje korisnika. Pozovite `book()` sinhrono unutar obrađivača klika, a ne nakon `await`, `fetch` ili `setTimeout`. Pogledajte [Režimi checkouta](/developers/js-client/checkout-modes.md).

## Panel se otvara prazan

Iframe checkouta je blokiran. Dozvolite `https://www.entase.com` u direktivi `frame-src` politike bezbednosti sadržaja – pogledajte [Instaliranje klijenta](/developers/js-client/installing-the-client.md).

## "Entase nije definisan"

Skripta nije završila učitavanje kada se vaš kôd pokrenuo. To se dešava kada se `client.js` učitava sa `async` ili `defer`, ili je postavljen nakon skripte koja ga koristi. Sačekajte događaj `entase:ready` – pogledajte [Instaliranje klijenta](/developers/js-client/installing-the-client.md).

## "Pokušaj rezervacije događaja nakon što je klijent uništen"

`destroy()` je pozvan nad instancom i ona više ne može da se koristi. U aplikaciji s jednom stranicom to obično znači da je komponenta uklonila svoj klijent, dok je deljena referenca ostala na mestu. Kreirajte novu instancu za novi prikaz.

## "Inicijalizacija Entase okvira nije uspela. Kontejner nije pronađen."

Samo za ugrađeni vidžet. Kôd `obj` u konfiguraciji ne odgovara nijednom elementu na stranici. ID kontejnera mora biti `entase_` iza kojeg sledi isti kôd, a kontejner mora postojati u DOM-u pre inicijalizacije vidžeta – proverite da li postoji greška u kucanju ili da li vaša skripta naknadno prikazuje kontejner.

## Pokreće se samo poslednji osluškivač događaja

`on()` čuva jedan povratni poziv po nazivu događaja, a registrovanje drugog zamenjuje prvi. Registrujte ga jednom i raspodelite dalje iz tog povratnog poziva – pogledajte [Događaji](/developers/js-client/events.md).

## Iskačući prozor se otvara na pogrešnom ekranu

Središnja tačka se izračunava pri kreiranju instance i ne ažurira se kada posetilac premesti prozor pregledača. Ponovo je izračunajte pre rezervacije pomoću `setTopWindowCenter()` – pogledajte [Referenca metoda](/developers/js-client/methods.md).

## Parametri praćenja nedostaju u porudžbinama

Samostalni klijent ne čita URL vaše stranice. Sami prosledite parametre u `tprm` – pogledajte [Praćenje i pristanak](/developers/js-client/tracking-and-consent.md). Imajte na umu da `setTracking()` zamenjuje ceo objekat umesto da ga dopunjava, pa kasniji poziv može neprimetno izostaviti ranije parametre.
