DOM элементы Яндекс кнопок поделиться


Kaminskiy_Serg
108

На странице категории сайта есть много блоков Яндекс кнопок поделиться для каждой записи. Выглядит код примерно так:

<script src="https://yastatic.net/share2/share.js"></script>

<div class="ya-share2" data-services="vkontakte,facebook,odnoklassniki,twitter,lj,viber,whatsapp,telegram,skype" data-size="s" data-url="https://site.ru/page1.html" data-title="Заголовок 1" data-description="Описание 1"></div>

<div class="ya-share2" data-services="vkontakte,facebook,odnoklassniki,twitter,lj,viber,whatsapp,telegram,skype" data-size="s" data-url="https://site.ru/page2.html" data-title="Заголовок 2" data-description="Описание 2"></div>

Проблема в том что генерируется примерно по 45 элементов DOM структуры на каждый блок кнопок, что дает лишние 1350 элементов на 30 записей при проверке через PageSpeed Insights, Lighthouse и GTMetrix. Нашел временное решение: подгружаю файл share.js через 15 секунд после загрузки страницы, что позволяет отложить прорисовку кнопок и решает проблему с DOM структурой в сервисах. Но 15 секунд… это многовато.

В сервисе PLUSO нет проблем с DOM структурой. Они как-то по-хитрому подгружают файл вот так:

<script type="text/javascript">(function() {
  if (window.pluso)if (typeof window.pluso.start == "function") return;
  if (window.ifpluso==undefined) { window.ifpluso = 1;
    var d = document, s = d.createElement('script'), g = 'getElementsByTagName';
    s.type = 'text/javascript'; s.charset='UTF-8'; s.async = true;
    s.src = ('https:' == window.location.protocol ? 'https' : 'http')  + '://share.pluso.ru/pluso-like.js';
    var h=d[g]('body')[0];
    h.appendChild(s);
  }})();</script>

Пытался переделать этот код чтобы Яндекс кнопки таким образом подгружать, чтобы их не видели вышеприведенные сервисы, но в JavaScript я не силен и у меня ничего не получилось. Возможно ли вообще вот таким способом подгружать JS файл Яндекс кнопок чтобы они не создавали лишние DOM элементы в PageSpeed Insights или же там все гораздо сложнее чем я думаю? Как этот код переделать чтобы загружать JS Яндекс кнопок таким образом? PLUSO использовать не очень хочу. «Мы не ищем легких путей» 🙃


LEOnidUKG

Ну яндекс ещё туда свою метрику вставляет.  Как вариант это загрузка скрипта по действию пользователя, клик, скролл и т.д.


totamon

зачем вам в анонсах то эти кнопки? вы исследовали, они эффективны? или чисто для красоты чтоб было?)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *