Полезные статьи по разработке сайта на системе управления 1С-Битрикс. Программирование. Верстка.

Убираем атрибут text/javascript в 1С Битрикс и закрывающиеся теги meta

  94
При проверке сайта в валидаторе w3c часто возникает ошибка The type attribute is unnecessary for JavaScript resources. Это значит, что атрибут type='text/javascript' для тега script не нужен. Он считается устаревшим. На сколько известно 1С-Битрикс добавляет свои скрипты в код страницы и убрать некоторые атрибут не предоставляется возможным. Для решения данной проблемы необходимо с помощью события onEndBufferContent отлавливать атрибут type в исходном коде и вырезать регулярным выражением. Таким же образом можно убрать лишние слэши в тегах meta и input Битрикс. Для этого разместите в init.php (/bitrix/php_interface/init.php или /local/php_interface/init.php) следующий код:
 //вырезаем type="text/javascript"
AddEventHandler("main", "OnEndBufferContent", "removeType");
 
//вырезаем лишние закрывающие теги
AddEventHandler("main", "OnEndBufferContent", "removeTrailingSlash");
 
function removeType(&$content) {
    $content = str_replace(' type="text/javascript"', "", $content);
}
function removeTrailingSlash(&$content) {
    if (preg_match_all('!<link (.*>?)/>!im', $content, $match)) {
        foreach ($match[0] as $str) {
            $content = str_replace($str, str_replace('/>', ">", $str), $content);
        }
    }
    if (preg_match_all('!<meta (.*>?)/>!im', $content, $match)) {
        foreach ($match[0] as $str) {
            $content = str_replace($str, str_replace('/>', ">", $str), $content);
        }
    }
    if (preg_match_all('!<input (.*>?)/>!im', $content, $match)) {
        foreach ($match[0] as $str) {
            $content = str_replace($str, str_replace('/>', ">", $str), $content);
        }
    }
}
Помощь проекту
Привет, меня зовут Вика! Я являюсь автором сайта Weblim.
Если Вам помогла данная статья, вы можете отблагодраить меня перечислив любую денежную сумму. Заранее спасибо!