Задать вопрос
@xonar
А смысл?

Отложить загрузку скриптов, пока не загрузится весь сайт, как?

Здравствуйте.

Есть сайт, на нём есть внешние js скрипт, аля метрика, фейсбук, гугл и т.д. Из-за них PageSpeed = 57, без них 93.

Как лучше будет их впихнуть в window.onload? Чтоб они не конфликтовали?

//////UPDATE. Хотя ток ща понял, что window.onload не поможет, а только понизит показатели. Так как сначала загрузится страница, потом скрипты и увеличит время загрузки страницы в целом. Как справиться с этими внешними скриптами?
  • Вопрос задан
  • 10587 просмотров
Подписаться 2 Простой 3 комментария
Решения вопроса 2
@xonar Автор вопроса
А смысл?
Нашёл рабочее решение.

<script>
var fired = false;

window.addEventListener('scroll', () => {
    if (fired === false) {
        fired = true;
        
        setTimeout(() => {
            // Здесь все эти тормознутые трекеры, чаты и прочая ересь,
            // без которой жить не может отдел маркетинга, и которые
            // дико бесят разработчиков, когда тот же маркетинг приходит
            // с вопросом "почему сайт медленно грузится, нам гугл сказал"
        }, 1000)
    }
});
</script>
Ответ написан
@VetalSoft
Разработка и продвижение сайтов
Решение для корректного отображения счетчика в метрике. Проверяем на ботов и выдаем скрипты без задержки. Лишних ботов из списка можно убрать.
Этот метод улучшает показатели PageSpeed.

<?php
	function isBot(){
	/* Эта функция будет проверять, является ли посетитель роботом поисковой системы */
	  $bots = array(
		'rambler','googlebot','aport','yahoo','msnbot','turtle','mail.ru','omsktele',
		'yetibot','picsearch','sape.bot','sape_context','gigabot','snapbot','alexa.com',
		'megadownload.net','askpeter.info','igde.ru','ask.com','qwartabot','yanga.co.uk',
		'scoutjet','similarpages','oozbot','shrinktheweb.com','aboutusbot','followsite.com',
		'dataparksearch','google-sitemaps','appEngine-google','feedfetcher-google',
		'liveinternet.ru','xml-sitemaps.com','agama','metadatalabs.com','h1.hrn.ru',
		'googlealert.com','seo-rus.com','yaDirectBot','yandeG','yandex',
		'yandexSomething','Copyscape.com','AdsBot-Google','domaintools.com',
		'Nigma.ru','bing.com','dotnetdotcom'
	  );
	  foreach($bots as $bot) 
		if(stripos($_SERVER['HTTP_USER_AGENT'], $bot) !== false){
		  return true;
		}
	  return false;
	}
if( isBot() ) { ?>

// script для ботов

<?php } else { ?>
		window.onload = function() {
			setTimeout(() => {

// script с задержкой

			},3000);
		}
<?php } ?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@ProAI
Попробуйте:
<script src="file.js" defer></script>
или
<script src="file.js" async></script>
Ответ написан
SeaInside
@SeaInside
15 лет пилю все эти штуки
Отложите их загрузку через window.onload => setTimeout с задержкой 2-3 секунды. Это работает для того, чтобы не влияло на показатели PageSpeed.
Достоверно известно, что при этом подходе Яндекс Метрика не показывает, что скрипт Метрики установлен на сайт. Данные нормально поступают, но в панели Метрики значок красный. :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы