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>

Google アナリティクスと同様に、これはスクリプト タグを生成し、それを dom に挿入します。

最初から書いてみません<script type="text/javascript" src="someUrl.com/etc"></script>か?

ページの読み込み(別名非同期)後に読み込み/注入することにより、ブロック動作を防ぐためだと思います。非同期が唯一の理由ですか??

4

1 に答える 1

3

スクリプトをロードするこの形式では、スクリプトがページに非同期的に追加されます。

この属性js.async = true;は古いブラウザーではサポートされていないため、これは古いブラウザーでも機能させるための一種のハックです。

仕組み: スクリプトをヘッドまたは DOM の既にロードされた部分に追加して、ブラウザがこのスクリプトをダウンロードしてから先に進むのを防ぎます。

于 2012-10-18T23:11:06.183 に答える