2

在 facebook 开发者文档中,我看到:

<html>
    <head>
      <title>My Great Web page</title>
    </head>
    <body>

      <div id="fb-root"></div>
      <script>
        // Load the SDK Asynchronously
        (function(d){
           var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
           if (d.getElementById(id)) {return;}
           js = d.createElement('script'); js.id = id; js.async = true;
           js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
           ref.parentNode.insertBefore(js, ref);
         }(document));
      </script>

      <div class="fb-like"></div>

    </body>
 </html>

像谷歌分析一样,这会生成一个脚本标签,并将其插入到 dom 中。

为什么不一<script type="text/javascript" src="someUrl.com/etc"></script>开始就写呢?

我假设它通过在页面加载(又名异步)后加载/注入来防止阻塞行为。异步是唯一的原因吗?

4

1 回答 1

3

这种加载脚本的形式将其异步添加到页面中。

较旧的浏览器不支持该属性js.async = true;,因此即使在较旧的浏览器上也可以使用该属性。

工作原理:它将脚本添加到头部或 dom 的已加载部分,以防止浏览器在继续之前下载此脚本。

于 2012-10-18T23:11:06.183 回答