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を避けようとしています。