动态 (ajax) 内容加载,Facebook 分享按钮消失
Dynamic (ajax) content loading, facebook share button disappears
所以在文中(文章)我有这个:
<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/hu_HU/sdk.js#xfbml=1&version=v2.5";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="facebook_share_wrapper">
<div class="fb-share-button"
data-href="http://www...."
data-layout="button">
</div>
</div>
第一次,加载的很好!但是第二次,在 ajax 完成后:
setTimeout(function() {
console.log(FB.XFBML.parse());
}, 3000);
如你所见,我给了额外的时间。但是 facebook 分享按钮不会出现! FB.XFBML.parse
解决了很多类似的问题,但我的没有...
我假设您也尝试动态加载 JS SDK,但如果您只是将它添加到 DOM(例如使用 innerHTML),则不会调用 JS。此外,您不初始化任何应用程序。
解决方法:
- 在页面加载时加载 JS SDK - 仅一次
- 使用 FB.init
初始化您的应用
- 在 AJAX 调用的回调中使用
FB.XFBML.parse()
,在将共享按钮添加到 DOM 之后
附加信息和如何加载 JS SDK 的示例:https://developers.facebook.com/docs/javascript/quickstart
重要提示:不要使用 setTimeout,那只是一个非常糟糕的解决方法。
所以在文中(文章)我有这个:
<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/hu_HU/sdk.js#xfbml=1&version=v2.5";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="facebook_share_wrapper">
<div class="fb-share-button"
data-href="http://www...."
data-layout="button">
</div>
</div>
第一次,加载的很好!但是第二次,在 ajax 完成后:
setTimeout(function() {
console.log(FB.XFBML.parse());
}, 3000);
如你所见,我给了额外的时间。但是 facebook 分享按钮不会出现! FB.XFBML.parse
解决了很多类似的问题,但我的没有...
我假设您也尝试动态加载 JS SDK,但如果您只是将它添加到 DOM(例如使用 innerHTML),则不会调用 JS。此外,您不初始化任何应用程序。
解决方法:
- 在页面加载时加载 JS SDK - 仅一次
- 使用 FB.init 初始化您的应用
- 在 AJAX 调用的回调中使用
FB.XFBML.parse()
,在将共享按钮添加到 DOM 之后
附加信息和如何加载 JS SDK 的示例:https://developers.facebook.com/docs/javascript/quickstart
重要提示:不要使用 setTimeout,那只是一个非常糟糕的解决方法。