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

Jquery Facebook SDK在文档就绪时调用失败,jquery,facebook,Jquery,Facebook,如果我直接从锚标记的onclick调用Facebook SDK函数,它会工作,但如果我通过jQuery的$(document).ready(),触发它,它会在第一次警报后停止,并且不会抛出任何错误 function lfr() { alert('test if loaded'); /* This works in both calls. */ FB.getLoginStatus(function(response) { if (response.status =

如果我直接从锚标记的onclick调用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. */
        }
    });
}

因为它还没有时间连接到Facebook。试试这个:

if (response.status === 'connected') {
  /* Do something - this only works through anchor tag onclick call. */
} 
else {
  alert('not conected');
}

您将看到第二个警报将显示。

您应该在window.fbAsyninit()函数中连接事件处理程序,以便Facebook JavaScript SDK有机会完全初始化

因此,在评论部分,Facebook的文档通常会显示
//此处的其他初始化代码
,您应该放置事件处理程序连接代码

有关更多信息,请参阅


FWIW、window.fbAsyninit和
$(document).ready()
不是同一事件,也不是同时发生的。

这里查看关于jQuery实现的facebook文档:


不,我想facebook的电话还没打出来。我甚至在IF块之前就做了一个警报(response.status),但什么也没有得到。但是,如果我从TestThank调用它,它将非常有效。如果我将代码添加到fbAsyninit()函数中,那么这次我无法确定其他元素是否在Facebook SDK之外加载。(原始页面上的其他jscript元素)-我想没有任何事件检查来确保两个文档都准备好了,同时facebook init也完成了。基本上,我是在某个特定的场合在页面上写一个javascript变量,我希望能够检查文档何时准备好,facebook何时加载,是否设置了某个变量,并对facebook进行api调用。我是否让它太混乱了?只需将jQuery.ready调用放在FBAsyncint()的内部。我大部分时间都把我的放在那里。
$(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);
  });
});