Валидность javascript для компонентов MODx
Всех приветствую.
Давно ничего не писал и вот сподобился. :)
Много раз встречал проблемы, которые описывали другие участники сообщества.
А именно — валидность Javascript, который дополнения интегрируют в тело страницы.
Первая проблема — w3c валидатор ругается на атрибут type=«text/javascript». Этот атрибут интегрируют в вызовы скрипта в теле страницы дополнения Minifyx, Minishop2, ms2Gallery, Tickets и другие.
Вторая проблема — использование метода document.write() для динамического внедрения внешних скриптов. На это уже ругается Google PageSpeed Insights. Это очень старая проблема. Решается заменой document.write() на document.createElement('script');
В основном, Google PageSpeed Insights, ругается вот на этот скрипт Tickets: assets/components/tickets/js/web/default.js
Вопрос следующий — как будем решать эти проблемы? :) И что для этого нужно? Если нужен донат — пишите. Готов за разумную денежку проспонсировать для сообщества эти изменения.
Заранее благодарен авторам за ответ и всем всего хорошего.
Давно ничего не писал и вот сподобился. :)
Много раз встречал проблемы, которые описывали другие участники сообщества.
А именно — валидность Javascript, который дополнения интегрируют в тело страницы.
Первая проблема — w3c валидатор ругается на атрибут type=«text/javascript». Этот атрибут интегрируют в вызовы скрипта в теле страницы дополнения Minifyx, Minishop2, ms2Gallery, Tickets и другие.
Вторая проблема — использование метода document.write() для динамического внедрения внешних скриптов. На это уже ругается Google PageSpeed Insights. Это очень старая проблема. Решается заменой document.write() на document.createElement('script');
В основном, Google PageSpeed Insights, ругается вот на этот скрипт Tickets: assets/components/tickets/js/web/default.js
Вопрос следующий — как будем решать эти проблемы? :) И что для этого нужно? Если нужен донат — пишите. Готов за разумную денежку проспонсировать для сообщества эти изменения.
Заранее благодарен авторам за ответ и всем всего хорошего.
Комментарии: 12
Ну на text/javascript вроде не ругается, а просто предупреждает. Ругается вот на атрибуты vue и alpine. Css валидатор ругается на css-переменные. Так что воспринимаю предупреждения и ошибки w3c валидатора просто как рекомендации
При прочих равных, если на одном сайте есть предупреждения, а на другом нет — предпочтение отдадут сайту без предупреждений.
В minishop проблем с валидностью скриптов не будет.
Чтобы убрать атрибуты и заодно удалить слеши у одиночных тегов можно сделать плагин на событие onWebPagePrerender )):
<?php
if($modx->resource->get('content_type') == 1){
$arr1 = array('type="text/css"', 'type="text/javascript"',' />','/>');
$arr2 = array('','','>','>');
$output = &$modx->resource->_output;
$output = str_replace($arr1,$arr2,$output);
}
Спасибо за совет.
Такие скрипты заметно снижают скорость первичной загрузки.
Такие скрипты заметно снижают скорость первичной загрузки.
Ничего они не снижают. Откуда вообще такая информация что такой код что-то замедлит? Он перед Рендером страницы сделает замену. Если вы считаете что 1 str_replace что-то замедлит, то как вообще что-то работает?
Иван, спасибо за ответ. Перепроверил — работает и не снижает скорость загрузки. Поспешил с выводами. Использовал похожий плагин. Он замедлял загрузку на 0,12-0,19 мс.
Павел, прошу прощения. Перепроверил — всё работает. Скорость первичной загрузки страницы не снижается. Еще раз — спасибо!
А сам не хочешь сделать нужные PR?
Николай, благодарю за ответ. Если честно — не умею.
А что мешает научиться?
Артур, спасибо за вопрос.
Учиться ничего не мешает. Более того, искренне считаю, что учиться — всегда нужно. Так уж получилось, что у меня другая сфера деятельности и компетенций. В этой сфере я и стараюсь всячески развиваться и учиться. :)
Учиться ничего не мешает. Более того, искренне считаю, что учиться — всегда нужно. Так уж получилось, что у меня другая сфера деятельности и компетенций. В этой сфере я и стараюсь всячески развиваться и учиться. :)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.