javascript - 更新 Facebook 评论插件链接而不重新加载页面

标签 javascript jquery facebook-comments

这会显示来自该http://domain.com/some/abc的评论

<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 的评论,而无需重新加载页面。

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

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

最佳答案

是的,可行;我相信我成功复制了您想要的结果 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>

我通过首先替换评论 div 的innerHTML(我创建它来容纳 fb:comments 标签),然后在同一评论 div 上调用 FB.XFBML.parse(); 来做到这一点。感谢 this post 提醒我这种方法。

关于javascript - 更新 Facebook 评论插件链接而不重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10744420/

相关文章:

javascript - 构建一个 JSON 字符串

javascript - orderBy 没有按预期工作 : Angularjs

javascript - AngularJS:inputMask 在 angularJS 表中不起作用

javascript - 如何使操作发生在元素的当前实例上?

facebook - 使用图谱 API 获取(识别)对评论的回复

Facebook 评论给出 "Warning: [URL] is unreachable."但 Facebook 调试器显示该页面的状态 200。我该如何解决?

javascript - 响应式粘性汉堡导航栏

javascript - 无法解析包含单引号的 json 数据

javascript - 获取 column-index > 3 和 value > 6 的 td

javascript - Facebook 评论 : no input shown if many comments