# Felsökning

> De problem som oftast uppstår när klienten integreras – inbäddad kassa som faller tillbaka till ett pop-up-fönster, blockerade fönster, saknade containrar och konsolvarningar.

Klienten loggar allt den rapporterar till webbläsarkonsolen med prefixet `[Entase API]`. Öppna konsolen först.

## Kassan öppnas som ett pop-up-fönster i stället för en panel

Den vanligaste orsaken, i den ordning de är värda att kontrollera:

1. **Domänen är inte ett betrott ursprung.** Lägg till den i Inställningar → Integrationer och se till att `www.`-prefixet matchar det som din webbplats faktiskt använder – se [Integrationer och anpassning av kassan](/organizers/settings/integrations-and-checkout-customization.md).
2. **Sidan levereras inte över HTTPS.** Inbäddad kassa används aldrig på en osäker sida.
3. **Ingen publicerbar nyckel.** Utan `pk` kan klienten inte kontrollera om inbäddad kassa är tillåten, så den använder ett pop-up-fönster.
4. **`book()` kördes för tidigt.** Behörighetskontrollen är asynkron och läget är pop-up tills den har fått svar. En kassa som öppnas automatiskt när sidan laddas kan hinna före kontrollen – se [Kassalägen](/developers/js-client/checkout-modes.md).
5. **`connect-src` blockeras av din Content Security Policy**, så kontrollen slutförs aldrig. Konsolen visar den blockerade begäran.

`entase.getCheckoutMode()` rapporterar det fastställda läget och är det snabbaste sättet att skilja konfigurationsproblem från tidsproblem.

## "Pane checkout mode enabled for localhost"

Förväntat under utveckling. Klienten förutsätter panelläge på `localhost` och `127.0.0.1` så att du kan utveckla mot den inbäddade layouten, och varnar eftersom det antagandet inte säger något om produktion. Lägg till din faktiska domän bland betrodda ursprung innan du lanserar.

## Pop-up-fönstret blockeras

Webbläsare tillåter bara att ett fönster öppnas under en användaråtgärd. Anropa `book()` synkront i klickhanteraren, inte efter `await`, `fetch` eller `setTimeout`. Se [Kassalägen](/developers/js-client/checkout-modes.md).

## Panelen öppnas tom

Kassans iframe blockerades. Tillåt `https://www.entase.com` i `frame-src`-direktivet i din Content Security Policy – se [Installera klienten](/developers/js-client/installing-the-client.md).

## "Entase is not defined"

Skriptet hade inte lästs in färdigt när din kod kördes. Det händer när `client.js` läses in med `async` eller `defer`, eller placeras efter skriptet som använder det. Vänta på händelsen `entase:ready` – se [Installera klienten](/developers/js-client/installing-the-client.md).

## "Trying to book an event after the Client has been destroyed"

`destroy()` anropades på instansen och den kan inte längre användas. I en enkelsidig applikation betyder detta vanligtvis att en komponent tog bort sin klient medan en delad referens fanns kvar. Skapa en ny instans för den nya vyn.

## "Entase frame initialization failed. Container not found."

Gäller endast inbäddningswidgeten. `obj`-koden i konfigurationen matchar inget element på sidan. Containerns id måste vara `entase_` följt av samma kod, och den måste finnas i DOM:en innan widgeten initieras – kontrollera om det finns ett skrivfel eller om en container renderas senare av dina egna skript.

## Endast den senaste händelselyssnaren körs

`on()` behåller en callback per händelsenamn, och registrering av en andra ersätter den första. Registrera en gång och fördela sedan vidare inifrån den callbacken – se [Händelser](/developers/js-client/events.md).

## Pop-up-fönstret öppnas på fel skärm

Mittpunkten beräknas när instansen skapas och uppdateras inte när besökaren flyttar webbläsarfönstret. Beräkna om den före bokning med `setTopWindowCenter()` – se [Metodreferens](/developers/js-client/methods.md).

## Spårningsparametrar saknas i beställningar

Den fristående klienten läser inte sidans URL. Skicka själv vidare parametrarna till `tprm` – se [Spårning och samtycke](/developers/js-client/tracking-and-consent.md). Observera att `setTracking()` ersätter hela objektet i stället för att sammanfoga med det, så ett senare anrop kan tyst ta bort tidigare parametrar.
