# Risoluzione dei problemi

> I problemi più frequenti durante l'integrazione del client – il checkout integrato che ricorre a un pop-up, finestre bloccate, contenitori mancanti e avvisi nella console.

Il client registra nella console del browser tutto ciò che segnala, con il prefisso `[Entase API]`. Apri prima la console.

## Il checkout si apre come pop-up anziché come pannello

Le cause più comuni, nell'ordine in cui vale la pena verificarle:

1. **Il dominio non è un'origine attendibile.** Aggiungilo in Impostazioni → Integrazioni, facendo corrispondere il prefisso `www.` effettivamente usato dal tuo sito – vedi [Integrazioni e personalizzazione del checkout](/organizers/settings/integrations-and-checkout-customization.md).
2. **La pagina non viene servita tramite HTTPS.** Il checkout integrato non viene mai utilizzato su una pagina non sicura.
3. **Nessuna chiave pubblicabile.** Senza `pk` il client non può verificare se il checkout integrato è consentito, quindi rimane sul pop-up.
4. **`book()` è stato eseguito troppo presto.** Il controllo delle autorizzazioni è asincrono e la modalità resta pop-up finché non riceve una risposta. Un checkout aperto automaticamente al caricamento della pagina può precederlo – vedi [Modalità di checkout](/developers/js-client/checkout-modes.md).
5. **`connect-src` è bloccato dalla tua Content Security Policy**, quindi il controllo non viene mai completato. La console mostrerà la richiesta bloccata.

`entase.getCheckoutMode()` riporta la modalità risolta ed è il modo più rapido per distinguere i problemi di configurazione da quelli di tempistica.

## "Pane checkout mode enabled for localhost"

Previsto durante lo sviluppo. Il client presuppone la modalità pannello su `localhost` e `127.0.0.1` affinché tu possa sviluppare usando il layout integrato, e mostra un avviso perché questa presunzione non dice nulla sull'ambiente di produzione. Aggiungi il tuo dominio reale alle origini attendibili prima della pubblicazione.

## Il pop-up è bloccato

I browser consentono l'apertura di una finestra solo durante un'azione dell'utente. Chiama `book()` in modo sincrono all'interno del gestore del clic, non dopo un `await`, un `fetch` o un `setTimeout`. Vedi [Modalità di checkout](/developers/js-client/checkout-modes.md).

## Il pannello si apre vuoto

L'iframe del checkout è stato bloccato. Consenti `https://www.entase.com` nella direttiva `frame-src` della tua Content Security Policy – vedi [Installazione del client](/developers/js-client/installing-the-client.md).

## "Entase is not defined"

Lo script non aveva terminato il caricamento quando è stato eseguito il tuo codice. Questo accade quando `client.js` viene caricato con `async` o `defer`, oppure viene posizionato dopo lo script che lo utilizza. Attendi l'evento `entase:ready` – vedi [Installazione del client](/developers/js-client/installing-the-client.md).

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

`destroy()` è stato chiamato sull'istanza e non può più essere utilizzata. In un'applicazione a pagina singola, questo di solito significa che un componente ha eliminato il proprio client mentre un riferimento condiviso è rimasto attivo. Crea una nuova istanza per la nuova vista.

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

Solo per il widget incorporato. Il codice `obj` nella configurazione non corrisponde a nessun elemento della pagina. L'id del contenitore deve essere `entase_` seguito dallo stesso codice e deve esistere nel DOM prima dell'inizializzazione del widget – verifica la presenza di un errore di battitura o di un contenitore visualizzato successivamente dai tuoi script.

## Viene eseguito solo l'ultimo listener di eventi

`on()` mantiene una callback per ogni nome di evento e la registrazione di una seconda sostituisce la prima. Registra una sola volta e dirama dall'interno di quella callback – vedi [Eventi](/developers/js-client/events.md).

## Il pop-up si apre sullo schermo sbagliato

Il punto centrale viene calcolato al momento della creazione dell'istanza e non viene aggiornato quando il visitatore sposta la finestra del browser. Ricalcolalo prima della prenotazione con `setTopWindowCenter()` – vedi [Riferimento dei metodi](/developers/js-client/methods.md).

## I parametri di tracciamento sono assenti dagli ordini

Il client autonomo non legge l'URL della tua pagina. Trasmetti tu stesso i parametri in `tprm` – vedi [Tracciamento e consenso](/developers/js-client/tracking-and-consent.md). Nota che `setTracking()` sostituisce l'intero oggetto anziché unirlo a quello esistente, quindi una chiamata successiva può eliminare silenziosamente i parametri precedenti.
