Отложить загрузку <script>

180
04 марта 2019, 08:50

Есть достаточно массивная карта:

<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Adb6daf7023d35dc56770ae50d551f5dee452afcabf206dcd9223a0167506d503&amp;width=100%25&amp;height=500&amp;lang=ru_RU&amp;scroll=true"></script>

И она очень сильно замедляет загрузку страницы. Вопрос, есть ли способ отложить ее загрузку до полной загрузки DOM? Или любой другой способ прооптимизировать это дело.

Пунктов на карте несколько тысяч.

Answer 1

Необходимо заменить атрибут async на defer - данный атрибут откладывает загрузку скрипта до момента пока страница полностью не будет загружена.

<script type="text/javascript" charset="utf-8" defer src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Adb6daf7023d35dc56770ae50d551f5dee452afcabf206dcd9223a0167506d503&amp;width=100%25&amp;height=500&amp;lang=ru_RU&amp;scroll=true"></script>

Так-же можно использовать искусственную задержку где speed=0 определяет задержку загрузки:

<script type="text/javascript" charset="utf-8" defer src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Adb6daf7023d35dc56770ae50d551f5dee452afcabf206dcd9223a0167506d503&amp;width=100%25&amp;height=500&amp;lang=ru_RU&amp;scroll=true?speed=0"></script>
Answer 2

Как вариант, можно что то такое

window.onload = function(){ 
  setTimeout( function(){ сюда пишешь вызов своей карты }, 2000); 
}
Или вызывать карту, только если пользователь доскролил до нужного участка страници

READ ALSO
Ребят нужно помощь по Owl slider

Ребят нужно помощь по Owl slider

Как на всех мобильниках отключить свойство autoplay, пробовал черезtrigger отключать при проверке на разрешение <768px, но всё равно не хочет работать...

200