Facebook JS SDK:初始化SDK的正确方法

时间:2014-04-17 13:42:55

标签: javascript facebook facebook-javascript-sdk

以下是Facebook建议如何将JS 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()后才在DOM中加载all.js,从而产生错误?

1 个答案:

答案 0 :(得分:1)

  

为什么window.fbAsyncInit函数在此之前而不是之后?

您可以在任何地方编写此代码。

  

浏览器是否会在实际访问实际加载SDK的代码的第二部分之前尝试运行它?

SDK加载异步后会触发

window.fbAsyncInit,因此无论您在之前/之后或任何地方编写此内容都无关紧要。

  

只有在调用FB.init()之后才能在DOM中加载all.js,从而产生错误吗?

什么错误?顺便说一句,在FB.init之后无法加载all.js。这是相反的过程 - 只有在加载SDK后才能初始化FB!加载SDK后,它将自动进入 - window.fbAsyncInit = function() {