Валидность 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

Вопрос следующий — как будем решать эти проблемы? :) И что для этого нужно? Если нужен донат — пишите. Готов за разумную денежку проспонсировать для сообщества эти изменения.

Заранее благодарен авторам за ответ и всем всего хорошего.
Wassi Wassinen
03 июля 2023, 03:06
modx.pro
2
934
+4

Комментарии: 12

deleted
03 июля 2023, 06:22
0
Ну на text/javascript вроде не ругается, а просто предупреждает. Ругается вот на атрибуты vue и alpine. Css валидатор ругается на css-переменные. Так что воспринимаю предупреждения и ошибки w3c валидатора просто как рекомендации
    Wassi Wassinen
    03 июля 2023, 13:46
    +1
    При прочих равных, если на одном сайте есть предупреждения, а на другом нет — предпочтение отдадут сайту без предупреждений.
    Артур Шевченко
    03 июля 2023, 08:31
    +1
    В minishop проблем с валидностью скриптов не будет.
      Павел Романов
      03 июля 2023, 10:15
      2
      +4
      Чтобы убрать атрибуты и заодно удалить слеши у одиночных тегов можно сделать плагин на событие 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);    
      }
        Wassi Wassinen
        03 июля 2023, 13:45
        0
        Спасибо за совет.
        Такие скрипты заметно снижают скорость первичной загрузки.
          Ivan
          03 июля 2023, 21:03
          0
          Ничего они не снижают. Откуда вообще такая информация что такой код что-то замедлит? Он перед Рендером страницы сделает замену. Если вы считаете что 1 str_replace что-то замедлит, то как вообще что-то работает?
            Wassi Wassinen
            04 июля 2023, 03:56
            0
            Иван, спасибо за ответ. Перепроверил — работает и не снижает скорость загрузки. Поспешил с выводами. Использовал похожий плагин. Он замедлял загрузку на 0,12-0,19 мс.
          Wassi Wassinen
          04 июля 2023, 03:57
          0
          Павел, прошу прощения. Перепроверил — всё работает. Скорость первичной загрузки страницы не снижается. Еще раз — спасибо!
          Николай Савин
          03 июля 2023, 13:32
          0
          А сам не хочешь сделать нужные PR?
            Wassi Wassinen
            03 июля 2023, 13:44
            0
            Николай, благодарю за ответ. Если честно — не умею.
              Артур Шевченко
              03 июля 2023, 15:56
              0
              А что мешает научиться?
                Wassi Wassinen
                03 июля 2023, 19:17
                +3
                Артур, спасибо за вопрос.
                Учиться ничего не мешает. Более того, искренне считаю, что учиться — всегда нужно. Так уж получилось, что у меня другая сфера деятельности и компетенций. В этой сфере я и стараюсь всячески развиваться и учиться. :)
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            12