Javascript → Асинхронный вариант гугло кнопки +1
В русской версии мастера генерации кнопки +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
Оставить комментарий