我想知道如果我有一个Like按钮和一个在同一页面上为时间轴应用调用FB.login的按钮,我应该如何加载Javascript SDK。 Like按钮的代码使用以下内容:
<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&appId=126380467442965";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
但对于应用的OAuth dialog,Facebook建议使用:
<script src="http://connect.facebook.net/en_US/all.js"></script>
<div id="fb-root"></div>
<script>
// assume we are already logged in
FB.init({appId: '123050457758183', xfbml: true, cookie: true, oauth: true});
...
</script>
我应该使用哪一个?
答案 0 :(得分:0)
不同的代码是SDK的异步和同步实现。第一个是异步 - 代码将加载而不会影响页面上的其他元素。第二个(仅包括脚本标记)是同步的。 Facebook脚本将被加载,它将在加载时保持页面。
异步实现通常更好 - 它应该使页面感觉更快。但是,由于Facebook代码是在页面之后加载的,所以在我们确定它已加载之前,我们不能使用任何FB函数。因此,异步实现为我们提供了一个回调,它在SDK加载时触发。
我认为最好使用第一个代码段中的代码,但添加此代码以使用回调初始化SDK。
按钮上的FB.login应该与你的按钮一起工作。
window.fbAsyncInit = function() {
FB.init({
appId: ...,
status: true,
cookie: true,
xfbml: true,
oauth: true
});
};