为什么我们需要添加<div id ="fb-root"> </ div>

Tin*_*ggo 62 javascript sdk facebook

为什么我们需要在我们的Facebook应用程序中添加这些标签.这对标签的用途是什么.我创建了一个使用apprequest的应用程序,即使我没有在我的脚本前面添加这些标签,它也能正常工作.所以我真的很想知道为什么我们需要添加它们.谢谢.

Sim*_*ton 46

它是Facebook javascript脚本将元素附加到DOM的占位符.如果没有这个,当引用的Facebook脚本运行时,它无处可附加元素.

您可以看到fb-root作为初始化的一部分被附加到.

<script type="text/javascript">
      window.fbAsyncInit = function() {
        FB.init({appId: 'xxxxxx', status: true, cookie: true,
                 xfbml: true});
      };

      (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol +
          '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
      }());
    </script>
Run Code Online (Sandbox Code Playgroud)

  • 这不是不引人注目的.Facebook应该创建一个元素来附加它自己的元素. (6认同)
  • 难道他们不能直接追加头? (5认同)
  • v2.1 SDK会为您创建它(如果控制台中有警告)(如果尚未存在). (5认同)
  • 他们不能直接附加到第一个身体标签吗? (4认同)
  • 更新:SDK不再需要`<div id ="fb-root"> </ div>`标记,如果省略标记,则控制台中不再有任何警告.见[这个答案](http://stackoverflow.com/a/33428040/1145177). (3认同)
  • 这是使用不显眼的javascript的示例. (2认同)

Dou*_*g S 38

更新:Facebook不再要求您包含<div id="fb-root"></div>在HTML中.

您现在可以删除它.Facebook Javascript SDK自己创建它,并将其附加到BODY标记.控制台中也没有显示任何警告,就像之前一样.

Facebook文档也已更新,不再显示<div id="fb-root"></div>要求.

版本1.0的旧文档(显示<div id="fb-root"></div>):https: //developers.facebook.com/docs/javascript/quickstart/v1.0

2.5版的当前文档(不再显示<div id="fb-root"></div>):https://developers.facebook.com/docs/javascript/quickstart/v2.5

  • @DougS 看这里(我希望我能更好地格式化它):facebook-sdk-debug.js:2069 尚未创建“fb-root”div,自动创建@ facebook-sdk-debug.js:2069append @ facebook -sdk-debug.js:3237appendHidden @ facebook-sdk-debug.js:3284(匿名函数)@ facebook-sdk-debug.js:7321flush @ facebook-sdk-debug.js:3164 (2认同)