WEB

Правильная асинхронная загрузка шрифтов Google Fonts

Всем привет!

При проверке скорости сайта goolgle speed insight или gtmertrix нам говорят, что шрифты гугл блокируют содержимое страницы и их необходимо загрузить позже.

<link  href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic,800,800italic&subset=latin,cyrillic' rel='stylesheet' type='text/css'>

Делаем все с помощью скрипта fonfaceobserver, который также загружаем асинхронно (весит всего 5 Кб в несжатом виде).

Качаем здесь: https://github.com/bramstein/fontfaceobserver/

Сам скрипт кладем например в папку /JS. Получится, что доступен он по ссылке «ваш сайт»/js/fontfaceobserver.js

Далее в header добавляем вместо ссылки на гугл шрифт (для начала просто закомментируйте его <!— —>)

<!--подключаем шрифт-->
<style>
@import url(//fonts.googleapis.com/css?family=Ваш шрифт и начертания);
/* шрифт по умолчанию, до тех пор пока не подгружен новый шрифт */.fonts-loaded {
body {
font-family: Ваш шрифт, sans-serif;
}
}

</style>

<script>
var script = document.createElement('script');

script.async = true;
script.src = 'путь_к_скрипту/fontfaceobserver.js';
script.onload = function () {
// инициализация
var font = new FontFaceObserver('Ваш шрифт');

font.load().then(function () {
document.documentElement.className += " fonts-loaded";
});
};
document.head.appendChild(script);
</script>;

<!---------------------->

Вот и все, вариант рабочий, есть немного другие решения, но хром ругается на ошибки в переменных.

Вот в качестве примера:

<!--подключаем шрифт-->
<style>
@import url(//fonts.googleapis.com/css?family=Open+Sans:400,400i,300,700&amp;subset=cyrillic,latin);

/* шрифт по умолчанию, до тех пор пока не подгружен новый шрифт */.fonts-loaded {
body {
font-family: Open Sans, sans-serif;
}
}

</style>

<script>
var script = document.createElement('script');

script.async = true;
script.src = 'js/fontfaceobserver.js';
script.onload = function () {
// инициализация
var font = new FontFaceObserver('Open Sans');

font.load().then(function () {
document.documentElement.className += " fonts-loaded";
});
};
document.head.appendChild(script);
</script>

<!---------------------->

Все работает быстро и асинхронно.

Всем добра и чтоб росла борода!))

Поделиться ссылкой:

yurok_1

Share
Published by
yurok_1

Recent Posts

CAPCUT приложение для ПК (десктоп версия) бесплатно

Всем привет! Недавно начал баловаться видеомонтажом для роликов в ютуб и соцсети. Честно, много искал…

1 год ago

Парсинг e-mail почтовых адресов в чатах telegram

Всем привет!Новый день - новая задача: В последнее время стало появляться много чатов открытых с…

2 года ago

Автоматическое заполнение seo описания для категорий товаров woocommmerce

Всем привет!Пишу крайне редко, а жаль, есть что написать но времени как обычно....Ну да ладно,…

2 года ago

Плагины для WordPress must have — мое прочтение

Всем привет! Каждый раз разворачивая сайт для себя или кого-то на worpdress или opencart или…

3 года ago

Интеграция сайт + гугл формы + Unisender без сервисов

Всем привет! Возникла идея и задача: чтобы привлечь подписчиков на сайте запустили опрос-исследование для профессиональных…

3 года ago

Бесплатный сайт: домен + хостинг free

Всем привет! Недавно озадачился поисками бесплатных ресурсов для размещения телеграмм бота (решил поиграть попробовать) и…

4 года ago