Клиент поставляется из CDN Entase в виде одного файла. Нет npm-пакета, нет бандла для сборки и нет зависимостей, которые нужно поддерживать в актуальном состоянии – вы всегда получаете текущую версию.
<script src="https://js.entase.com/client.js"></script>При загрузке скрипта определяется глобальный класс Entase. Сам по себе он больше ничего не делает: не выполняет сетевых запросов, не изменяет DOM и ничего не отрисовывает. Всё начинается, когда вы создаёте экземпляр.
Создание экземпляра
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' });Создавайте один экземпляр для каждой страницы и используйте его повторно для всех событий. Конструктор регистрирует слушатель message в окне и начинает определять, какой режим оформления заказа разрешён для вашего домена, поэтому создание нескольких экземпляров приводит к дублированию слушателей и вызовов определения режима без какой-либо пользы.
У каждого параметра есть значение по умолчанию, поэтому new Entase() без аргументов допустим – но без pk клиент не сможет проверить, может ли ваш домен использовать встроенное оформление заказа, и всегда будет переключаться на всплывающее окно. См. Режимы оформления заказа.
Асинхронная загрузка скрипта
Если вы загружаете client.js с помощью async или defer, класса ещё не будет, когда выполнится ваш встроенный скрипт. После загрузки библиотека отправляет событие entase:ready в window, поэтому дождитесь его:
<script src="https://js.entase.com/client.js" async></script>
<script>
let entase = null;
const init = () => { entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' }); };
if (typeof Entase !== 'undefined') init();
else window.addEventListener('entase:ready', init);
</script>Проверка typeof важна: если скрипт уже завершил загрузку, событие entase:ready уже было отправлено, и его ожидание будет бесконечным.
Очистка
В одностраничном приложении вызывайте destroy(), когда представление, которому принадлежит экземпляр, размонтируется:
entase.destroy();Это удалит зарегистрированные клиентом слушатели окна. Уничтоженный экземпляр нельзя использовать повторно – вызов book() для него записывает ошибку в журнал и ничего не делает. Вместо этого создайте новый экземпляр.
Политика безопасности контента
Если ваш сайт отправляет заголовок Content-Security-Policy, для оформления заказа необходимы:
script-src https://js.entase.com– для загрузки библиотеки.frame-src https://www.entase.com– в режиме панели оформление заказа отображается в iframe.connect-src https://www.entase.com– клиент вызывает API Entase, чтобы определить разрешённый режим оформления заказа.
Без frame-src режим панели создаёт пустую панель. Без connect-src определение режима завершается ошибкой, и каждое оформление заказа открывается во всплывающем окне.