# Problemen oplossen

> De problemen die het vaakst optreden bij het integreren van de client – inline checkout die terugvalt op een pop-up, geblokkeerde vensters, ontbrekende containers en consolewaarschuwingen.

De client logt alles wat hij rapporteert naar de browserconsole, voorafgegaan door `[Entase API]`. Open eerst de console.

## De checkout wordt als pop-up geopend in plaats van als paneel

De gebruikelijke oorzaken, in de volgorde waarin je ze het best controleert:

1. **Het domein is geen vertrouwde origin.** Voeg het toe in Instellingen → Integraties, met hetzelfde `www.`-voorvoegsel als je site daadwerkelijk gebruikt – zie [Integraties en checkoutaanpassing](/organizers/settings/integrations-and-checkout-customization.md).
2. **De pagina wordt niet via HTTPS aangeboden.** Inline checkout wordt nooit gebruikt op een onbeveiligde pagina.
3. **Geen publiceerbare sleutel.** Zonder `pk` kan de client niet controleren of inline checkout is toegestaan, dus blijft hij een pop-up gebruiken.
4. **`book()` werd te vroeg uitgevoerd.** De toestemmingscontrole verloopt asynchroon en de modus is een pop-up totdat er antwoord is. Een checkout die automatisch wordt geopend bij het laden van de pagina kan daarop vooruitlopen – zie [Checkoutmodi](/developers/js-client/checkout-modes.md).
5. **`connect-src` wordt geblokkeerd door je Content Security Policy**, waardoor de controle nooit wordt voltooid. De console toont het geblokkeerde verzoek.

`entase.getCheckoutMode()` geeft de bepaalde modus terug en is de snelste manier om configuratieproblemen van timingproblemen te onderscheiden.

## "Pane checkout mode enabled for localhost"

Verwacht tijdens de ontwikkeling. De client gaat uit van paneelmodus op `localhost` en `127.0.0.1`, zodat je kunt ontwikkelen met de inline lay-out, en waarschuwt omdat die aanname niets zegt over productie. Voeg je echte domein toe aan vertrouwde origins voordat je live gaat.

## De pop-up wordt geblokkeerd

Browsers staan alleen toe dat een venster wordt geopend tijdens een gebruikersactie. Roep `book()` synchroon aan in de click-handler, niet na een `await`, een `fetch` of een `setTimeout`. Zie [Checkoutmodi](/developers/js-client/checkout-modes.md).

## Het paneel wordt leeg geopend

De checkout-iframe is geblokkeerd. Sta `https://www.entase.com` toe in de `frame-src`-richtlijn van je Content Security Policy – zie [De client installeren](/developers/js-client/installing-the-client.md).

## "Entase is not defined"

Het script was nog niet volledig geladen toen je code werd uitgevoerd. Dit gebeurt wanneer `client.js` met `async` of `defer` wordt geladen, of na het script wordt geplaatst dat het gebruikt. Wacht op de gebeurtenis `entase:ready` – zie [De client installeren](/developers/js-client/installing-the-client.md).

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

`destroy()` is aangeroepen op de instantie en deze kan niet langer worden gebruikt. In een single-page application betekent dit meestal dat een component zijn client heeft afgebroken terwijl een gedeelde referentie bleef bestaan. Maak een nieuwe instantie voor de nieuwe weergave.

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

Alleen voor de embedwidget. De `obj`-code in de configuratie komt niet overeen met een element op de pagina. De id van de container moet `entase_` gevolgd door dezelfde code zijn, en deze moet in de DOM bestaan voordat de widget wordt geïnitialiseerd – controleer op een typefout of op een container die later door je eigen scripts wordt gerenderd.

## Alleen de laatste event listener wordt uitgevoerd

`on()` behoudt één callback per gebeurtenisnaam en het registreren van een tweede vervangt de eerste. Registreer één keer en vertak vanuit die callback – zie [Gebeurtenissen](/developers/js-client/events.md).

## De pop-up wordt op het verkeerde scherm geopend

Het middelpunt wordt berekend wanneer de instantie wordt gemaakt en wordt niet bijgewerkt wanneer de bezoeker het browservenster verplaatst. Bereken het opnieuw voordat je boekt met `setTopWindowCenter()` – zie [Naslagwerk methoden](/developers/js-client/methods.md).

## Trackingparameters ontbreken in bestellingen

De zelfstandige client leest de URL van je pagina niet. Geef de parameters zelf door aan `tprm` – zie [Tracking en toestemming](/developers/js-client/tracking-and-consent.md). Let op dat `setTracking()` het volledige object vervangt in plaats van ermee samen te voegen, waardoor een latere aanroep eerder ingestelde parameters stilzwijgend kan verwijderen.
