Facebook通过Ajax评论插件

时间:2016-08-30 15:38:46

标签: jquery ajax facebook

我在我的网站上有Facebook评论插件,如果我简单刷新页面,一切正常,但......

  • 每当我通过Ajax加载新页面时,插件会闪烁然后消失 (使用FB.XFBML.parse(),如果没有,则不显示任何内容)。

我可以通过删除.fb_hide_iframes类来解决这个问题{left:-10000px;} 但是iframe收到一个固定的高度值,即:style =“height:100px;” - 所以基本上,盒子被切成两半,它不会像我重新加载页面一样动态。)

  • 如果我删除了.fb_hide_iframe并为iframe设置了更大的高度值,除了获得大空格外,该框的“加载更多评论”将无效。

重要说明:如果我简单刷新页面,则不会出现.fb_hide_iframes类 - 一切正常

我已经尝试了一切,但没有任何效果,所以我在问你的帮助...... 还有其他人可以想到的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我遇到了这个问题并且能够通过包含以下单独的javascript文件来解决它:

  1. 一个在ajax上调用FB.XFBML.parse()的函数完成(你现在似乎已经有了)。
  2. 还在同一文件中包含fb js,并在任何document.ready函数之外包含(见下文)。
  3. (function($) {
        // This function is what gets called on ajax complete.
        // Note: ajax complete part is not in this example.
        $.fn.fb_comments_refresh = function(data) {
            if (typeof FB != 'undefined') {
                // Refresh comment box.
                FB.XFBML.parse();
            }
        };
    })(jQuery);
    // Needed for fb ajax modal to work repeatedly.
    (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";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, "script", "facebook-jssdk"));
    

    需要在ajax请求的页面中调用此文件。