Как убрать ошибку "type attribute is unnecessary for JavaScript resources" в Битрикс
При проверке сайта валидатором W3C можно столкнуться с предупреждением type attribute is unnecessary for JavaScript resources. Оно означает, что атрибут type="text/javascript" больше не требуется в HTML5 и считается устаревшим.
Сам по себе этот атрибут никак не влияет на работу сайта — современные браузеры прекрасно понимают JavaScript без него. Однако валидатор продолжает сообщать о подобных местах, а в ядре 1С-Битрикс они встречаются довольно часто.
В шаблоне сайта проблему можно решить вручную, удалив атрибут у собственных тегов <script>. Но изменять файлы ядра Битрикс не рекомендуется — после очередного обновления все изменения будут потеряны.
Гораздо проще воспользоваться событием OnEndBufferContent, которое вызывается перед отправкой HTML пользователю. На этом этапе можно обработать итоговый буфер страницы и удалить устаревший атрибут.
Удаляем type="text/javascript" из всего HTML
Добавьте следующий код в файл /bitrix/php_interface/init.php.
AddEventHandler("main", "OnEndBufferContent", "removeScriptType");
function removeScriptType(&$content)
{
$content = str_replace(
' type="text/javascript"',
'',
$content
);
}
Почему используется str_replace()
В данном случае регулярные выражения не нужны. Нам необходимо заменить всего одну фиксированную строку, поэтому str_replace() работает быстрее, потребляет меньше ресурсов и делает код проще для понимания.
Результат
После подключения обработчика атрибут type="text/javascript" будет автоматически удаляться из итогового HTML страницы, включая теги, сформированные ядром 1С-Битрикс и установленными модулями.
Стоит понимать, что данное изменение носит исключительно косметический характер. Оно помогает избавиться от предупреждений валидатора W3C, но не влияет на скорость работы сайта, SEO или выполнение JavaScript-кода.
Комментарии
Будем рады вашему мнению и вопросам по статье.