-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
Добрый день.
В процессе использования модуля обнаружено критичное поведение, которое ломает работу 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 расширений
- делает поведение страницы непредсказуемым
По факту модуль вмешивается в работу ядра и может полностью сломать фронтенд-проект без очевидных причин.
Предлагаю:
- убрать удаление kernel JS/CSS по умолчанию
или - сделать это поведение опциональным и явно задокументировать
или - отказаться от очистки буфера через регулярные выражения
В текущем виде модуль может привести к полной неработоспособности публичной части сайта.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels