Ядро BX: ajax, события, готовые виджеты
Клиентская библиотека BX предоставляет базовую инфраструктуру интерфейса: транспорт AJAX-запросов (BX.ajax.runAction с автообновлением CSRF-токена), событийно-ориентированную шину EventEmitter и компоненты всплывающих окон main.popup. При работе с композитным сайтом обработчики интерфейсных событий привязывают к событию BX.addCustomEvent('onFrameDataReceived'), гарантируя их применение к динамическим областям.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
BX.ready, BX.ajax, BX.ajax.runAction
-
2
События BX.Event и EventEmitter
-
3
Готовые виджеты: попапы, уведомления
-
4
Совместимость с jQuery и другими библиотеками
Материалы
Официальная документация
-
Всплывающие окна и меню main.popup Новая дока
-
Менеджер уведомлений Новая дока
-
JS библиотека BX: справочник Старая дока
-
JS библиотека BX: события Старая дока
Проверь себя
После включения автокомпозита обработчик клика из BX.ready() перестал вешаться на кнопку в шапке. Почему?
BX.ready выполняет колбэки один раз на DOMContentLoaded, а кнопка теперь приезжает в динамической области позже. Инициализацию нужно перенести в динамическую область или повесить на событие композита onFrameDataReceived через BX.addCustomEvent.
В логе один запрос BX.ajax.runAction упал с invalid_csrf, а повтор через секунду прошёл. Что чинить?
Ничего. Фильтр Csrf кладёт свежий токен в customData ответа, core_ajax.js подставляет его в заголовок X-Bitrix-Csrf-Token и повторяет запрос сам. Чинить нужно только когда ошибка стабильно повторяется.
Почему в консоли появилось предупреждение про утечку памяти EventEmitter и надо ли поднимать лимит через setMaxListeners()?
Кто-то подписывается через subscribe при каждом открытии слайдера или попапа и не вызывает unsubscribe той же функцией. Лимит поднимать не надо, надо отписываться.
Заказчик жалуется, что в попапе с именем клиента «поехала вёрстка». Где искать причину?
В параметре content попапа из main.popup: строка вставляется как HTML, и имя с угловой скобкой или кавычкой ломает разметку, а заодно открывает XSS. Нужен DOM-узел с textContent.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить