В русской версии мастера генерации кнопки +1, почему то нет опции "asynchronous code", о которой так радостно трубил гугл (пруф). Поэтому правим ручками:
вместо
<script src="https://apis.google.com/js/plusone.js"></script>
<g:plusone></g:plusone>
пишем
<script>
(function() {
var po = document.createElement('script');
po.type = 'text/javascript';
po.async = true;
po.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(po, s);
})();
</script>
<g:plusone></g:plusone>
Комментарии
А почему не воспользовался setTimeout ?
эмммм, что?
Ну вот например асинхронная загрузка скрипта openAPI
ну и какой смысл в setTimeout?)
В асинхронности, собсна) Замечая вызов setTimeout интерпретатор закидывает его в стек вызова и читает скрипты дальше, т.е. время на создание скрипта не тратится.
асинхронность тут в document.createElement, а не setTimeout
Ну так создание же выполняется с setTimeout асинхронно
смысл кода - не ждать загрузки https://apis.google.com/js/plusone.js, а не в асинхронном создании элемента
Ты забываешь про корректность работы во всех браузерах. Твой скрипт не будет асинхронно работать в IE 7 например.
пруф?
Нотариально заверенный скриншот из ie7: http://clip2net.com/s/1lUaG
После обортки в setTimeout: http://clip2net.com/s/1lUdZ
ну как и следовало ожидать, скрипт plusone.js загружается параллельно с картинками (читай асинхронно)
Что-то я запутался в результатах теста. Даже когда убираешь el.async = true; он всё равно грузится с картинками асинхронно. Потестируй в IE7 код, очень интересные результаты получаются.
http://xandeadx.ru/blog/javascript/488#comment-3985
Но ведь миллионы мух не могут ошибаться. Многие асинхронные загрузки сделаны именно с использованием setTimeout.
http://www.google.com/intl/ru/webmasters/+1/button/index.html здесь нет.
http://www.google.com/webmasters/+1/button/ а тут есть.
у меня нигде нет)
Advanced options
Спасибо за статью. Думаю, вам будет интересно почитать мою статью на тему асинхронности JS: http://plutov.by/post/javascript_memory
Добавить комментарий