2016-12-07 6 views
1

私は、公式のFacebook JS SDKスクリプトを読んでいます:DOMツリー内で外部JavaScriptリソースをどこに挿入するかは重要ですか?

<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'your-app-id', 
     xfbml  : true, 
     version : 'v2.8' 
    }); 
    FB.AppEvents.logPageView(); 
    }; 

    (function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script> 

それはfjs.parentNodeに作成した<script>タグを挿入します。それは設計によるのですか?

私は置き換え書く場合:

fjs.parentNode.insertBefore(js, fjs); 

で:

document.head.appendChild(js); 

それはまだ動作しますか?

+0

まだ動作するはずです。しかし本当の理由がない限り、Facebookが提供するコードを変更することはお勧めしません。 – CBroe

答えて

0

はい両方が動作しますが、

fjs.parentNode.insertBefore(js, fjs); 

これはこれは、ヘッド内のすべてのJSの後に挿入するすべてのJSファイルの前にJSを挿入し、他の側

document.head.appendChild(js); 

ます。

+0

そして、ある場所と別の場所に挿入すると、動作の違いがあればそれが発生しますか? –

関連する問題