Николаев Виталий
Блог веб-разработчика: Битрикс, PHP, Python, Linux и SEO
Битрикс Битрикс
01.03.2021

Битрикс не перемещать JS скрипт в конец страницы

В 1С-Битрикс в настройках Главного модуля есть полезная опция:

Переместить весь Javascript в конец страницы

После включения этой настройки Битрикс автоматически переносит JS-скрипты перед закрывающим тегом:

</body>

Это позволяет:

  • ускорить загрузку страницы;
  • улучшить показатели PageSpeed;
  • снизить блокировку рендера страницы;
  • ускорить отображение контента.

Проблема с переносом Javascript

Однако некоторые скрипты нельзя переносить вниз страницы.

Например:

  • Яндекс.Карты;
  • 2ГИС карты;
  • виджеты;
  • онлайн-чаты;
  • некоторые сторонние библиотеки.

После переноса таких скриптов могут появляться ошибки:

  • карта не отображается;
  • виджет не инициализируется;
  • JS выполняется раньше загрузки библиотеки;
  • ломается логика страницы.

Как исключить скрипт из переноса

Для исключения скрипта нужно добавить атрибут:

data-skip-moving="true"

Например:

<script
    data-skip-moving="true"
    charset="utf-8"
    src="https://widgets.2gis.com/js/DGWidgetLoader.js">
</script>

Как это работает

При наличии атрибута:

data-skip-moving="true"

Битрикс:

  • не переносит скрипт вниз страницы;
  • оставляет его на текущем месте;
  • загружает скрипт в исходной позиции.

Когда это особенно полезно

  • подключение Яндекс.Карт;
  • подключение 2ГИС;
  • Google Maps;
  • онлайн-чаты;
  • виджеты callback;
  • сторонние JS SDK;
  • старые библиотеки без defer;
  • скрипты, зависящие от порядка загрузки.

Пример с Яндекс.Картами

<script
    data-skip-moving="true"
    src="https://api-maps.yandex.ru/2.1/?lang=ru_RU">
</script>

Пример с Google Maps

<script
    data-skip-moving="true"
    src="https://maps.googleapis.com/maps/api/js">
</script>

Где включается перенос Javascript

Настройка находится:

  • Настройки;
  • Настройки продукта;
  • Главный модуль;
  • вкладка «Настройки».

Пункт:

Переместить весь Javascript в конец страницы

Плюсы переноса JS вниз страницы

  • ускоряется First Paint;
  • улучшается Lighthouse;
  • снижается блокировка рендера;
  • страница быстрее становится видимой пользователю.

Минусы и подводные камни

После включения настройки могут перестать работать:

  • карты;
  • старые плагины;
  • inline-скрипты;
  • скрипты без ожидания загрузки DOM;
  • сторонние виджеты.

Поэтому иногда приходится вручную исключать скрипты через:

data-skip-moving="true"

Итог

Если в Битрикс включен перенос Javascript вниз страницы, но определенный скрипт должен остаться на своем месте, достаточно добавить атрибут:

data-skip-moving="true"

После этого Битрикс не будет переносить данный JS-файл в конец страницы.

30 просмотров

Комментарии

Где заказы?
Почему у одних компаний очередь из клиентов, а у других пустой сайт и тишина?
Телеграм канал «Где заказы?» — про продажи, сайты и ошибки бизнеса на реальных примерах. Подписаться