背景: - 使用ajax获取一个名为“foo_posts”的实体。在这篇文章我使用Facebook分享和喜欢按钮
{% for post in foo_posts %}
<div class="foo">
{{ post }}
<div class="fb-like" data-send="true" data-width="450" data-href="http://foo/foo/detail/{{ foo.id }}/" data-show-faces="true"></div>
</div>
{%endfor%} 现在使用Ajax填充这些帖子。
问题: - 喜欢和分享的facebook由
初始化$(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_GB/all.js#xfbml=1&appId=245185848840630";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
这不起作用。如何调用此函数,以便正确填充like和share? 应该在ajax成功函数中调用它。 (现在正在页面上调用它)
P.S: - 我在成功函数中试过了。我猜错了。
答案 0 :(得分:20)
默认情况下,仅在Facebook JS-SDK初始化时解析XFBML标记。
在呈现页面后,将社交插件添加到DOM后,您应该调用FB.XFBML.parse()
方法。
您可以为所有文档调用它,也可以通过指定元素来搜索以下内容中的XFBML元素:
FB.XFBML.parse();
// OR
FB.XFBML.parse(DOM_ELEMENT_WHERE_AJAX_CONTENT_IS_PLACED);
答案 1 :(得分:0)
如果您使用多个Facebook共享按钮,并且您还具有多个社交媒体共享按钮,则可以完全跳过以包括只会降低页面速度的所有相关js,而不是共享按钮及其js,请仅使用链接分享您的帖子,
最好的方法是使用此方法,当您使用Ajax获取html时,您无需做任何事情。
facebook分享链接示例:
https://www.facebook.com/sharer.php?u=[your-url]
您可以按以下方式使用它:
<a href="https://www.facebook.com/sharer.php?u=[your-url]">Share on facebook</a>
您还可以使用css使此链接显示为Facebook按钮外观,或者可以将facebook或svg的图像用于facebook。