Facebook 指示我们将以下代码放在我们的页面上:
<div id="fb-root"></div>
<script>(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";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
而不是我将它包装在一个函数中:
function ReloadSocialSharing() {
//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_US/all.js#xfbml=1&appId=myappid";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
}
并在里面调用它:$(function () { }
现在我的点赞按钮和我通过 Facebook 面板发表的评论都显示出来并且工作正常。然后我进行 AJAX 调用并将新的 html 元素拉入我的页面。这些已经有适当的 Facebook 标记,类似于我原来的字段。我像这样进行ajax调用:
$('#search').ajaxSubmit(GetSearchAjaxFormOptions(!isDefault, element));
function GetSearchAjaxFormOptions(displayResetPreferencesButton, giveMeFocus) {
return {
target: '#search-results',
data: GetSearchData(),
success: function () { RunAfterSearchResultsAreReturned(giveMeFocus) },
error: function (error) {
alert("Oops. There was an error.")
}
};
}
RunAfterSearchResultsAreReturned() {
........
ReloadSocialSharing();
}
这一切都执行得很好,但是,通过 Ajax 调用添加的新社交共享元素没有连接并且不起作用。我错过了什么?
谢谢!
注意:我已经看到了使用 FB.XFBML.parse(); 的注释。但是,我试图避免 XFBML。