Middle JavaScript в Битриксе Обязательно

Ядро 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 и другими библиотеками

Материалы

Проверь себя

После включения автокомпозита обработчик клика из 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: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти