Zo4inec
8/15/2017 - 1:00 PM

Отложенная загрузка соц.виджетов

Отложенная загрузка соц.виджетов

#Ручная оптимизациия скорости загрузки страницы за счет отложенной подгрузки соц. шаринга

Макросы, которые вам нужно будет заменить:

YOUR-SITE-URL.com = url вашей страницы
FB-API-ID = id вашей кнопки в аккаунте Fb
VK-API-ID = id вашей кнопки в аккаунте Vk
В шаблоне удаляем оригинальные js-коды кнопок соц. шаринга, оставляем только относящийся к ним html-код.

<!-- twitter -->
<a href="https://twitter.com/share" class="twitter-share-button">Твитнуть</a>

<!-- facebook -->
<div class="fb-like" data-layout="button_count" data-width="130" data-show-faces="true"></div>
<div id="fb-root"></div>

<!-- vk -->
<div id="vk_like"></div>

<!-- odnoklassniki -->
<div id="ok_shareWidget"></div>

<!-- Google+ -->
<div class="g-plusone" data-size="medium" data-annotation="inline" data-width="120"></div>
В js добавляем отложенную подгрузку переписанного кода соц. кнопок:

$(window).load(function () {
  loadSocialSharingButtons();
});

function loadSocialSharingButtons() {
  // twitter button
  $.getScript("//platform.twitter.com/widgets.js", function(data, textStatus, jqxhr) {});


  // facebook button
  (function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/ru_RU/sdk.js#xfbml=1&appId=FB-API-ID&version=v2.0";
    fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));


  // vk button
  $.getScript("//userapi.com/js/api/openapi.js?115", function(data, textStatus, jqxhr) {
    VK.init({apiId: VK-API-ID, onlyWidgets: true});
    VK.Widgets.Like("vk_like", {type: "button", height: 20});
  });


  // odnoklassniki button
  // @url: http://apiok.ru/wiki/pages/viewpage.action?pageId=42476656
  !function (d, id, did, st) {
    var js = d.createElement("script");
    js.src = "http://connect.ok.ru/connect.js";
    js.onload = js.onreadystatechange = function () {
    if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") {
      if (!this.executed) {
        this.executed = true;
        setTimeout(function () {
          OK.CONNECT.insertShareWidget(id,did,st);
        }, 0);
      }
    }};
    d.documentElement.appendChild(js);
  }(document,"ok_shareWidget","http://YOUR-SITE-URL.com","{width:145,height:30,st:'straight',sz:20,ck:1}");


  // Google+
  window.___gcfg = {
    lang: 'ru',
    parsetags: 'onload'
  };
  $.getScript("//apis.google.com/js/platform.js", function(data, textStatus, jqxhr) {});
}