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

时间:2011-11-11 16:40:34

标签: javascript facebook sdk

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

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:37)

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

您现在可以将其删除。 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

答案 2 :(得分:-2)

使用Turbolinks 5变得更加简单。您只需要将data-turbolinks-permanent=true添加到fb-root div,它将在请求之间保留。无需摆弄javascript。