Create a gist now

Instantly share code, notes, and snippets.

@meritt /social.js
Last active Dec 5, 2016

What would you like to do?
Асинхронное подключение Google Analytics, Google +1, Facebook SDK, Twitter Widgets и Вконтакте API
(function(window, document) {
window.___gcfg = { // Настройки языка для Google +1 Button
lang: 'ru'
};
window._gaq = [ // Настройки Google Analytics
['_setAccount', 'UA-XXXXXX-1'],
['_trackPageview'],
['_trackPageLoadTime']
];
var apis = [
'https://apis.google.com/js/plusone.js', // Google +1 Button
'//vk.com/js/api/openapi.js?75', // Vkontakte API
'//platform.twitter.com/widgets.js', // Twitter Widgets
'//connect.facebook.net/ru_RU/all.js#xfbml=1', // Facebook SDK
('https:' == location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js' // Google Analytics
],
iterator = apis.length,
script = 'script',
fragment = document.createDocumentFragment(),
element = document.createElement(script),
clone;
while (iterator--) {
clone = element.cloneNode(false);
clone.async = clone.src = apis[iterator];
fragment.appendChild(clone);
}
clone = document.getElementsByTagName(script)[0];
clone.parentNode.insertBefore(fragment, clone);
})(this, document);
(function(c,b){c.___gcfg={lang:"ru"};c._gaq=[["_setAccount","UA-XXXXXX-1"],["_trackPageview"],["_trackPageLoadTime"]];for(var d=["https://apis.google.com/js/plusone.js","//userapi.com/js/api/openapi.js?34","//platform.twitter.com/widgets.js","//connect.facebook.net/ru_RU/all.js#xfbml=1",("https:"==location.protocol?"//ssl":"//www")+".google-analytics.com/ga.js"],e=d.length,f=b.createDocumentFragment(),g=b.createElement("script"),a;e--;)a=g.cloneNode(false),a.async=a.src=d[e],f.appendChild(a);a=b.getElementsByTagName("script")[0];
a.parentNode.insertBefore(f,a)})(this,document);
Owner

meritt commented Nov 21, 2011

Подробнее о том как применять этот код можно прочитать здесь: blog.simonenko.su

ai commented Nov 22, 2011

А почему этот код будет работать асинхронно? <script …> будет добавляться сразу же после этого скрипта и блокировать выполнение скриптов сайта, которые идут далее. Какая разница с тем, чтобы просто написать <script …>?

ai commented Nov 22, 2011

По-моему, гораздо правильнее подключать все эти скрипты после onload, чтобы у пользователя уже перестала показывать «крутилка», что сайт грузится.

Owner

meritt commented Nov 22, 2011

@ai он загрузится асинхронно потому что стоит атрибут async, так же это хорошо видно в любом профайлере.

А onload плох тем, что он будет ждать пока загрузятся изображения и другие файлы, что в некоторых случаях слишком долго.

Мой совет, сделай скрипт с onload и этот скрипт и проверь в профайлере что грузится быстрее ;)

ai commented Nov 22, 2011

@meritt ох, async у вас как-то в коде спрятан в присвоении ему строки :).

Owner

meritt commented Nov 22, 2011

@ai ну это чтобы в сжатом виде оно лучше сжалось ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment