Facebook评论(html5)不会显示它们是否在加载后插入DOM

时间:2012-05-25 18:02:55

标签: jquery facebook html5 asynchronous facebook-comments

我有一个帖子列表和一个“加载更多”按钮,可以在Twitter等无限卷轴上加载更多帖子。

问题是每个帖子都有Facebook评论,但我不想加载每个帖子的所有评论。

所以,我在jQuery中做到了这一点:

function showFbComments(id) {
var commentBox = '<div class=\"fb-comments\" data-href=\"http://www.tusecreto.com.ar/' + id + '\" data-num-posts=\"20\" data-width=\"100%\"></div>';
if($('#fb_comentarios_' + id).hasClass("loaded")) {
    $('#fb_comentarios_' + id).toggle();
} else {
$('#fb_comentarios_' + id).addClass("loaded").append(commentBox).toggle();
}
}

这样,当我点击“50 Comments”时,showFbComments函数将显示我的“fb_comentarios_id”DIV并附加Facebook HTML5代码。

问题是页面加载后注释不会显示。如果我在页面完全加载之前单击链接,那么显示就好了。

我认为它必须是Facebook的JS。我的意思是......

<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/es_ES/all.js#xfbml=1&appId=152950781809";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

有没有办法异步加载评论?

1 个答案:

答案 0 :(得分:3)

我想我找到了答案:https://developers.facebook.com/docs/reference/javascript/FB.XFBML.parse/

我刚刚添加了

FB.XFBML.parse(document.getElementById('#fb_comentarios_' + id));

追加后它现在正在工作。这是对的吗?