Какой из этих методов асинхронной загрузки является лучшим?документ написать? - PullRequest
0 голосов
/ 12 июля 2011

есть ли разница между этими двумя асинхронными js-загрузками?

<div class="g-plusone"></div>
<script type="text/javascript">
(function(d, t) {
var g = d.createElement(t),
s = d.getElementsByTagName(t)[0];
g.async = true;
g.src = 'https://apis.google.com/js/plusone.js';
s.parentNode.insertBefore(g, s);
})(document, 'script');
</script>

<script type="text/javascript">
//<![CDATA[
(function() {
  document.write('<fb:like href="http://www.sandrophoto.com/' + location.pathname + '" send="true" width="360" show_faces="false" font=""></fb:like>');
  var s = document.createElement('SCRIPT'), s1 = document.getElementsByTagName('SCRIPT')[0];
  s.type = 'text/javascript';
  s.async = true;
  s.src = 'http://connect.facebook.net/en_US/all.js#xfbml=1';
  s1.parentNode.insertBefore(s, s1);
})();
//]]>
</script>

Ответы [ 2 ]

0 голосов
/ 12 июля 2011

Эти два концептуально похожи по загрузке. Они оба создают новый тег сценария и добавляют его в DOM, что позволяет обеим загружаться асинхронно без зависимости от других тегов сценария, которые должны загружаться в представленном порядке. В этих реализациях есть незначительные различия, но они выглядят концептуально одинаково с точки зрения загрузки.

document.write () в коде FB вызывает некоторую сериализацию с другими событиями загрузки и может немного замедлять ее (зависит от обстоятельств).

0 голосов
/ 12 июля 2011

Самым очевидным отличием является то, что подход document.write записывает код в документ точно в том месте, где он находится, тогда как другой метод помещает содержимое в указанный div-контейнер.

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

Стив Соудерс написал отличную статью на эту тему, http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/,, которую я рекомендую прочитать.

...