# Усунення несправностей

> Найпоширеніші збої під час інтеграції клієнта – вбудоване оформлення замовлення переходить до спливного вікна, заблоковані вікна, відсутні контейнери та попередження в консолі.

Клієнт записує все, що повідомляє, до консолі браузера з префіксом `[Entase API]`. Спершу відкрийте консоль.

## Оформлення замовлення відкривається як спливне вікно, а не як панель

Звичайні причини, у порядку, у якому їх варто перевіряти:

1. **Домен не є довіреним джерелом.** Додайте його в Налаштування → Інтеграції, враховуючи префікс `www.`, з яким фактично працює ваш сайт – див. [Інтеграції та налаштування оформлення замовлення](/organizers/settings/integrations-and-checkout-customization.md).
2. **Сторінка не передається через HTTPS.** Вбудоване оформлення замовлення ніколи не використовується на незахищеній сторінці.
3. **Немає публічного ключа.** Без `pk` клієнт не може перевірити, чи дозволене вбудоване оформлення замовлення, тому залишається спливне вікно.
4. **`book()` виконався надто рано.** Перевірка дозволу є асинхронною, і до отримання відповіді використовується режим спливного вікна. Оформлення замовлення, автоматично відкрите під час завантаження сторінки, може випередити її – див. [Режими оформлення замовлення](/developers/js-client/checkout-modes.md).
5. **`connect-src` заблоковано вашою політикою безпеки вмісту**, тому перевірка ніколи не завершується. У консолі буде показано заблокований запит.

`entase.getCheckoutMode()` повідомляє визначений режим і є найшвидшим способом відрізнити проблеми конфігурації від проблем із часом виконання.

## "Режим оформлення замовлення в панелі увімкнено для localhost"

Це очікувано під час розробки. Клієнт передбачає режим панелі на `localhost` і `127.0.0.1`, щоб ви могли розробляти з вбудованим макетом, і попереджає, оскільки це припущення нічого не говорить про робоче середовище. Перед запуском додайте свій справжній домен до довірених джерел.

## Спливне вікно заблоковано

Браузери дозволяють відкрити вікно лише під час дії користувача. Викликайте `book()` синхронно всередині обробника кліку, а не після `await`, `fetch` або `setTimeout`. Див. [Режими оформлення замовлення](/developers/js-client/checkout-modes.md).

## Панель відкривається порожньою

iframe оформлення замовлення було заблоковано. Дозвольте `https://www.entase.com` у директиві `frame-src` вашої політики безпеки вмісту – див. [Встановлення клієнта](/developers/js-client/installing-the-client.md).

## "Entase не визначено"

Завантаження скрипту ще не завершилося, коли виконався ваш код. Це трапляється, коли `client.js` завантажується з `async` або `defer` чи розміщується після скрипту, який його використовує. Дочекайтеся події `entase:ready` – див. [Встановлення клієнта](/developers/js-client/installing-the-client.md).

## "Спроба забронювати подію після знищення клієнта"

Для екземпляра було викликано `destroy()`, і його більше не можна використовувати. В односторінковому застосунку це зазвичай означає, що компонент видалив свій клієнт, тоді як спільне посилання залишилося. Створіть новий екземпляр для нового подання.

## "Не вдалося ініціалізувати фрейм Entase. Контейнер не знайдено."

Лише для віджета вбудовування. Код `obj` у конфігурації не відповідає жодному елементу на сторінці. Ідентифікатор контейнера має бути `entase_`, після якого йде той самий код, і він має існувати в DOM до ініціалізації віджета – перевірте помилку в написанні або контейнер, який ваші скрипти рендерять пізніше.

## Працює лише останній слухач події

`on()` зберігає один зворотний виклик для кожної назви події, а реєстрація другого замінює перший. Зареєструйтеся один раз і розподіляйте виклики всередині цього зворотного виклику – див. [Події](/developers/js-client/events.md).

## Спливне вікно відкривається на неправильному екрані

Центральна точка обчислюється під час створення екземпляра й не оновлюється, коли відвідувач переміщує вікно браузера. Перед бронюванням перераховуйте її за допомогою `setTopWindowCenter()` – див. [Довідник методів](/developers/js-client/methods.md).

## Параметри відстеження відсутні в замовленнях

Автономний клієнт не зчитує URL вашої сторінки. Самостійно передавайте параметри до `tprm` – див. [Відстеження та згода](/developers/js-client/tracking-and-consent.md). Зверніть увагу, що `setTracking()` замінює весь об’єкт, а не об’єднує його, тому пізніший виклик може непомітно вилучити попередні параметри.
