Даже после чистой установки Битрикс сайт может не проходить валидацию W3C из-за устаревшего атрибута type="text/javascript" в тегах <script>. В HTML5 этот атрибут больше не требуется, но Битрикс по-прежнему добавляет его автоматически.
Решение: удаление атрибута type через обработчик событий
Чтобы убрать атрибутtypeиз тегов <script> без изменения ядра Битрикс, используйте обработчик события OnEndBufferContent.
-
Создайте или откройте файл
init.phpв одной из папок:-
/local/php_interface/init.php -
/bitrix/php_interface/init.php(в старых проектах)
-
-
Добавьте следующий код:
<?php // Удаление атрибута type из тегов script для валидности HTML5 AddEventHandler("main", "OnEndBufferContent", "removeScriptTypeAttribute"); function removeScriptTypeAttribute(&$content) { $content = str_replace(' type="text/javascript"', '', $content); }
Этот код автоматически удалит
type="text/javascript"из всех скриптов перед выводом страницы.
Почему это работает?
-
OnEndBufferContent— событие, которое срабатывает перед отправкой HTML в браузер.
-
str_replaceудаляет ненужный атрибут, сохраняя работоспособность скриптов.
-
Без правки ядра— решение не затрагивает системные файлы, позволяя обновлять Битрикс.
Проверка валидации
После применения изменений проверьте сайт в валидаторе W3C. Атрибут type больше не должен вызывать ошибок.
Важно:Если в коде есть другие невалидные элементы, их тоже нужно исправить для полного соответствия стандартам.
Это простое решение поможет улучшить SEO и соответствие современным веб-стандартам без риска для системы.