# Устранение неполадок

> Сбои, которые чаще всего возникают при интеграции клиента: встроенное оформление заказа переключается на всплывающее окно, заблокированные окна, отсутствующие контейнеры и предупреждения в консоли.

Клиент записывает в консоль браузера всё, что сообщает, с префиксом `[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()` возвращает определённый режим и позволяет быстрее всего отличить проблемы конфигурации от проблем со временем выполнения.

## "Pane checkout mode enabled for 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 is not defined"

Скрипт ещё не завершил загрузку, когда был выполнен ваш код. Это происходит, когда `client.js` загружается с `async` или `defer` либо размещён после скрипта, который его использует. Дождитесь события `entase:ready` – см. [Установка клиента](/developers/js-client/installing-the-client.md).

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

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

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

Только для виджета встраивания. Код `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()` заменяет объект целиком, а не объединяет его с существующим, поэтому последующий вызов может незаметно удалить ранее заданные параметры.
