【问题标题】:Updating facebook comments plugin link without reloading page更新 facebook 评论插件链接而不重新加载页面
【发布时间】:2012-05-24 19:58:50
【问题描述】:

这将显示来自该 http://domain.com/some/abc

的 cmets
<fb:comments href="http://domain.com/some/abc" num_posts="20" width="500"></fb:comments>
<div id="fb-root"></div>
<script type="text/javascript">
(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>

如果用户将表单中的值从 abc 更改为 xyz,我需要评论插件来显示来自 http://domain.com/some/xyz 的 cmets,而无需重新加载页面。

<form id="name">
    <select>
        <option value="abc" selected>abc</option>
        <option value="xyz">xyz</option>
    </select>
</form>

可行吗? (在 fb 开发页面上没有找到任何信息。)我正在使用 jQuery。谢谢!

【问题讨论】:

    标签: javascript jquery facebook-comments


    【解决方案1】:

    是的,这是可行的;我相信我设法复制了您想要的结果here;

    以防 jsfiddle 死亡的片段:

    (function loadfb(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');
    
    function changeDomain(value) {
        var newVal = '<fb:comments href="http://example.com/some/' + value + '" num_posts="20" width="500"></fb:comments><div id="fb-root"></div>';
        $('#comments').html(newVal);
        FB.XFBML.parse($('#comments').get(0),function(){
            $(".FB_Loader").remove();
        });
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form id="name">
      <select onChange="changeDomain(this.value);">
        <option value="abc" selected>abc</option>
        <option value="xyz">xyz</option>
      </select>
    </form>
    <div id="comments">
      <fb:comments href="http://example.com/some/abc" num_posts="20" width="500"></fb:comments>
      <div id="fb-root"></div>
    </div>

    我首先替换了 cmets div 的 innerHTML(我创建它是为了容纳 fb:cmets 标签),然后在同一个 cmets div 上调用 FB.XFBML.parse();。归功于 this post,它提醒了我该方法。

    【讨论】:

    • 只是提示:
      可以放在#cmets div 之外。无需重新创建该 div。
    • ++ 以防 jsfiddle 死了
    猜你喜欢
    • 1970-01-01
    • 2017-07-31
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 2012-07-19
    相关资源
    最近更新 更多