【发布时间】:2016-03-23 19:59:48
【问题描述】:
我在博客文章页面上实现了 FB cmets 和 FB 分享按钮。我第一次访问我的博客文章页面时,FB cmets 很少加载。当我刷新页面时,会发生以下五件事之一:1)页面加载时没有 cmets(大部分时间); 2) 页面加载 cmets; 3)出现FB未定义;偶尔我会得到 4) init not call with valid version。如果我快速刷新两次,有时页面根本不会刷新,只会返回一个空白页面。为了寻找这个解决方案,我查看了几乎所有与本次演讲相关的堆栈溢出帖子,包括: facebook comments plugin showing only after refresh
我不知道 turbolink 是什么,但我认为它与 RoR 有关,这是一个 Angular Fullstack 项目。在我的 index.html 中:
<body ng-app="theApp">
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'MyApp',
xfbml : true,
version : 'v2.5'
});
};
(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 = "https://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
在我的 cmets.html 上:
<div class="fb-comments" data-href={{webAddress}} data-width="100%" data-numposts="10"></div>
在我的 cmets.controller 上:
angular.element(document).ready(function() {
FB.XFBML.parse();
});
此解决方案使我的 FB 分享按钮在没有刷新的情况下出现(我最近的问题),但它让我的 cmets 直到再次刷新后才出现。
【问题讨论】:
标签: javascript angularjs facebook