2014-04-17 56 views
1

以下是Facebook建議如何將JS SDK添加到您的源代碼。Facebook JS SDK:正確的方式來初始化SDK

window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '{your-app-id}', 
     status  : true, 
     xfbml  : true 
    }); 
    }; 



    (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/all.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

如果我理解正確的話,代碼的第二部分,創建DOM中的<script></script>節點並設置源//connect.facebook.net/en_US/all.js

爲什麼window.fbAsyncInit功能之前來,而不是之後?瀏覽器是否會在實際加載到SDK實際加載的代碼的第二部分之前嘗試運行它?只有在FB.init()被調用後纔有可能將all.js加載到DOM中,從而產生錯誤?

回答

1

爲什麼在window.fbAsyncInit函數之前,而不是之後?

你可以在你希望的任何地方寫這段代碼。

瀏覽器是否會在它實際上到達實際加載SDK的代碼的第二部分之前嘗試運行它?

window.fbAsyncInit的SDK被加載異步被觸發後,所以它不會不管你在哪裏/後或任何之前寫這個 - 。

只有調用FB.init()後,all.js是否可能被加載到DOM中,從而產生錯誤?

什麼錯誤?順便說一下,all.js不能在FB.init之後加載。這是相反的過程 - FB只能在SDK加載後才能初始化!一旦SDK被加載,它會自動進入 - window.fbAsyncInit = function() {

相關問題