嵌入javascript片段:标记注入与完整标记

时间:2012-10-18 23:06:16

标签: javascript code-snippets

在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>

我认为它可以防止在页面加载(也称为异步)之后加载/注入阻塞行为。是异步的唯一原因??

1 个答案:

答案 0 :(得分:3)

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

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

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