Блог Горошко Андрея 1C-Битрикс Основы JavaScript в Битрикс: Объект BX, BX.ready, BX.bind и AJAX

Основы JavaScript в Битрикс: Объект BX, BX.ready, BX.bind и AJAX

Битрикс имеет собственное легковесное ядро JavaScript, которое предоставляет унифицированный API для решения большинства frontend-задач.

Оно избавляет от необходимости подключать тяжелые библиотеки вроде jQuery для простых операций и обеспечивает совместимость со всеми внутренними механизмами платформы.

Все функции ядра доступны через глобальный объект BX.

1. Выполнение кода после загрузки DOM: BX.ready()

Это аналог DOMContentLoaded или $(document).ready() в jQuery. Код, обернутый в BX.ready, выполнится только после того, как вся структура HTML-страницы будет загружена и готова к манипуляциям.

Синтаксис:

BX.ready(function() {
    // Ваш JS-код здесь
    console.log('DOM готов, можно работать!');
});

Использование BX.ready — обязательное правило для всего вашего JS-кода в шаблонах, чтобы избежать ошибок, когда скрипт пытается найти еще не существующий на странице элемент.

2. Навешивание событий: BX.bind()

Это кросс-браузерный способ добавить обработчик события к элементу. Аналог element.addEventListener().

Синтаксис: BX.bind(element, eventName, handler)

BX.ready(function() {
    // Находим кнопку по ID
    var myButton = BX('my-button-id'); // BX('id') - короткий аналог document.getElementById('id')

    if (myButton) {
        // Вешаем обработчик на событие 'click'
        BX.bind(myButton, 'click', function() {
            alert('Кнопка была нажата!');
        });
    }
});

3. Манипуляции с DOM и CSS-классами

Ядро предоставляет простые функции для работы с элементами и их классами.

BX.ready(function() {
    var myBlock = BX('my-block');

    if (myBlock) {
        // Добавить класс
        BX.addClass(myBlock, 'highlight');

        // Удалить класс
        BX.removeClass(myBlock, 'hidden');

        // Проверить наличие класса
        if (BX.hasClass(myBlock, 'active')) {
            console.log('Блок активен');
        }

        // Переключить класс (если есть - удалит, если нет - добавит)
        BX.toggleClass(myBlock, 'toggled-state');
    }
});
  • BX.findChild(container, params, recursive): мощная функция для поиска дочерних элементов по тегу, классу и т.д.

4. AJAX-запросы: BX.ajax() и BX.ajax.runAction()

Для асинхронных запросов к серверу в Битрикс есть два основных способа.

BX.ajax(params) — классический способ

Похож на $.ajax в jQuery. Используется для запросов к произвольным скриптам.

BX.ajax({
    url: '/ajax/my_handler.php',
    method: 'POST',
    data: {
        action: 'get_data',
        itemId: 123
    },
    dataType: 'json',
    onsuccess: function(response) {
        console.log('Ответ от сервера:', response);
    },
    onfailure: function(error) {
        console.error('Произошла ошибка:', error);
    }
});

BX.ajax.runAction(action, config) — современный D7-способ

Это предпочтительный метод для работы с контроллерами D7. Он удобнее и безопаснее.

// Запрос к действию 'my:module.user.like'
BX.ajax.runAction('my:module.user.like', {
    // Передаем данные
    data: {
        likedUserId: 45
    }
}).then(
    // Успешный ответ (response.status === 'success')
    function(response) {
        if (response.data.liked) {
            console.log('Лайк успешно поставлен!');
        }
    },
    // Ответ с ошибкой (response.status === 'error')
    function(response) {
        console.error('Ошибка:', response.errors[0].message);
    }
);

Преимущества runAction:

  • Работает с современными контроллерами D7.
  • Использует Promises, что делает код более читаемым.
  • Автоматически добавляет sessid для CSRF-защиты.
  • Стандартизированный формат ответа {status, data, errors}.

Вывод:
Ядро BX JS предоставляет все необходимые инструменты для frontend-разработки на Битрикс. Всегда оборачивайте свой код в BX.ready. Используйте BX.bind для событий и BX.addClass/removeClass для стилизации. Для AJAX-запросов к современным компонентам и модулям на D7 ваш выбор — BX.ajax.runAction.

Bitrix JavaScript, BX, BX.ready, BX.bind, BX.ajax, BX.addClass, BX.removeClass, JS Битрикс, frontend.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Интеграция службы доставки Почта России с сайтом на 1С-БитриксИнтеграция службы доставки Почта России с сайтом на 1С-Битрикс

Бесшовная и отказоустойчивая интеграция сайта на 1С-Битрикс с внешними учетными системами, банками, службами доставки и маркетплейсами — основа масштабирования современного бизнеса. Услуга «Интеграция службы доставки Почта России с сайтом на

Стоимость перехода на PHP 8.2 / 8.3 для старых сайтов на 1С-БитриксСтоимость перехода на PHP 8.2 / 8.3 для старых сайтов на 1С-Битрикс

Выбор редакции, расчет точной сметы и покупка официальных лицензий 1С-Битрикс и Битрикс24 — это ключевой этап планирования любого цифрового проекта. Информация по теме «Стоимость перехода на PHP 8.2 / 8.3

Как использовать $APPLICATION->GetDirProperty() в 1С-Битрикс: пример кодаКак использовать $APPLICATION->GetDirProperty() в 1С-Битрикс: пример кода

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Как использовать $APPLICATION->GetDirProperty() в 1С-Битрикс: пример кода». Вы узнаете экспертные методики работы с