Facebook SDK调用在文档就绪时失败

时间:2012-02-22 17:53:14

标签: jquery facebook

如果我直接通过锚点标记来调用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. */
        }
    });
}

3 个答案:

答案 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);
  });
});