Skip to content

Модуль удаляет kernel JS/CSS у гостей и ломает работу BX (ReferenceError: BX is not defined) #5

@kutalev

Description

@kutalev

Добрый день.

В процессе использования модуля обнаружено критичное поведение, которое ломает работу Bitrix на публичной части сайта.

Модуль подключается к событию OnEndBufferContent и через класс PagesBufferPurifier удаляет из HTML-буфера следующие элементы для неавторизованных пользователей:

  • <script src="/bitrix/js/main/core/core...">
  • BX.setJSList / BX.setCSSList
  • BX.message
  • kernel_main.js / kernel_main.css
  • template_styles.css и другие системные стили

Удаление происходит через регулярные выражения после формирования страницы.

Последствия:

  • на страницах пропадает main.core
  • объект BX становится undefined
  • возникает ошибка "ReferenceError: BX is not defined"
  • ломается любой JS-код, использующий API Bitrix
  • перестают работать AJAX, динамические блоки, loadNextPage и другие функции

При этом для авторизованных пользователей всё продолжает работать, что усложняет диагностику проблемы.

Подход с удалением ядра Bitrix через preg_replace по HTML-буферу:

  • небезопасен
  • несовместим с современным Asset API
  • нарушает dependency graph расширений
  • делает поведение страницы непредсказуемым

По факту модуль вмешивается в работу ядра и может полностью сломать фронтенд-проект без очевидных причин.

Предлагаю:

  1. убрать удаление kernel JS/CSS по умолчанию
    или
  2. сделать это поведение опциональным и явно задокументировать
    или
  3. отказаться от очистки буфера через регулярные выражения

В текущем виде модуль может привести к полной неработоспособности публичной части сайта.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions