Facebook sdk脚本仅在ajax调用中第一次加载

时间:2015-02-18 13:41:23

标签: ajax facebook button web2py

在网站中,我有一个左侧菜单,使用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加载?

感谢。

2 个答案:

答案 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();用另一种方式。你有什么建议吗?