在网站中,我有一个左侧菜单,使用ajax更改右侧。很好,很快。右侧是.load文件,只有这个文件发生变化。 我想让用户有可能在Facebook上分享当前视图。但在这种情况下.load文件更改时,Facebook SDK也必须重新加载。 与网站的其他部分一样,我添加: 之后:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'MyAppID',
xfbml : true,
version : 'v2.2'
});
};
(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/it_IT/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
我想要显示喜欢和分享按钮:
<div class="fb-like" data-href="MyURL" data-layout="button_count" data-action="like" data-show-faces="true" data-share="true"></div>
Facebook SDK仅在第一次加载时,当我加载完整页面时包含.load页面。因此不显示fb按钮。有没有办法强迫Facebook sdk加载?
感谢。
答案 0 :(得分:1)
您不需要多次加载SDK(实际上,代码是专门编写的,不允许您这样做)。
您需要做的是告诉SDK,DOM中有新元素,您希望将其解析为社交插件 - 这就是FB.XFBML.parse方法的用途。
因此,在向DOM添加新元素之后调用该方法 - 通过将DOM元素引用作为参数传递给整个页面,或者仅针对DOM的特定sbu-tree。
答案 1 :(得分:1)
感谢,但Facebook按钮仍然无法加载。 我添加了一个全局div,它接受ajax加载的所有页面并添加此函数onload。 function refresh_fb(){ FB.XFBML.parse(); }
我可能会调用FB.XFBML.parse();用另一种方式。你有什么建议吗?