如果我直接通过锚点标记来调用Facebook SDK函数,它可以正常工作,但是如果我通过jQuery的$(document).ready()
触发它,它会在第一次警报后停止并且不会抛出任何错误。
function lfr() {
alert('test if loaded'); /* This works in both calls. */
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
/* Do something - this only works through anchor tag onclick call. */
}
});
}
答案 0 :(得分:1)
您应该在window.fbAsyncInit()函数中连接事件处理程序,以便Facebook JavaScript SDK有机会完全初始化。
因此,在评论部分,Facebook的文档通常显示// Additional initialization code here
,您应该将事件处理程序挂钩代码。
有关详细信息,请参阅:https://developers.facebook.com/docs/reference/javascript/。
FWIW,window.fbAsyncInit和$(document).ready()
不是同一个事件,也不会同时发生。
答案 1 :(得分:0)
因为它还没有时间连接到Facebook。试试这个:
if (response.status === 'connected') {
/* Do something - this only works through anchor tag onclick call. */
}
else {
alert('not conected');
}
您将看到第二个警报将会显示。
答案 2 :(得分:0)
在这里查看关于jQuery实现的facebook文档: https://developers.facebook.com/docs/javascript/howto/jquery/
$(document).ready(function() {
$.ajaxSetup({ cache: true });
$.getScript('//connect.facebook.net/en_UK/all.js', function(){
FB.init({
appId: 'YOUR_APP_ID',
channelUrl: '//yourapp.com/channel.html',
});
$('#loginbutton,#feedbutton').removeAttr('disabled');
FB.getLoginStatus(updateStatusCallback);
});
});