Facebook评论插件被永久加载 - 是Facebook还是我的代码?

时间:2012-05-08 08:34:32

标签: javascript facebook facebook-graph-api facebook-comments

我在我们的网站上嵌入了Facebook评论插件,由于某种原因,评论插件卡在一个永久加载状态,如下所示:

Facebook comment plugin perpetual load

我不确定这是Facebook问题还是我的代码。这是我在开放<body>标签后的所有内容:

<div id="fb-root"></div>
<script>
   window.fbAsyncInit = function () {
      FB.init({ appId: '1234567890', cookie: true, oauth: true });
   };
   (function (d) {
      var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
      if (d.getElementById(id)) { return; }
      js = d.createElement('script'); js.id = id; js.async = true;
      js.src = "//connect.facebook.net/en_US/all.js";
      ref.parentNode.insertBefore(js, ref);
   } (document));
</script>

(1234567890是我的实际appID所在的位置)

在我想要显示Facebook评论插件的页面上,我有这个:

<div class="fb-comments" data-href="http://mydomain.com" 
     data-num-posts="2" data-width="580"></div>

据我所知,这一切都应该有效。但是,我没有看到任何关于此的FB错误,也没有看到其他网站上的问题。所以我想这是我的代码?

我甚至尝试使用FB开发者网站上代码生成器提供的确切代码:

<div id="fb-root"></div>
<script>
    (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#xfbml=1&appId=1234567890";
       fjs.parentNode.insertBefore(js, fjs);
    } (document, 'script', 'facebook-jssdk'));
</script>

不幸的是,这也不起作用。

愿意帮助我指出正确的方向!

更新:我尝试将我的AppID放在这个小提琴中(http://jsfiddle.net/Rw79Q/),它确实有效。所以我的代码中有一些东西导致了这个问题。不知道它可能是什么,我不能在这里分享我的整个代码。

1 个答案:

答案 0 :(得分:1)

window.fbAsyncInit = function () {
   ({ appId: '1234567890', cookie: true, oauth: true });
};

该功能的主体实际上不应该是一个参数吗?函数体中的({ appId: '1234567890', cookie: true, oauth: true });创建一个对象文字,然后不对它做任何事情。这相当于写作:

window.fbAsyncInit = function () {};

哪个没用。

其余代码看起来很有效,但我手边没有有效的应用ID /域来进行测试。将您的应用ID和域名放在这个小提琴中,看看它是否有效:http://jsfiddle.net/Rw79Q/


在聊天讨论中,看起来页面必须位于实时服务器上,否则您将获得“无限加载”行为。我能够使用本地file: URI重新创建行为。希望一旦你将其推向生产,这个问题就会消失。