我有以下代码(这是facebook API的初始化), 我不明白为什么这个代码片段在没有被代码中的任何其他地方调用的情况下在线运行!
有趣的是,当我删除fbAsyncInit function
“包装器”时,它的工作方式相同!
那么如果不在其他任何地方调用FB.init
来调用fbAsyncInit
怎么办?
window.fbAsyncInit = function() {
FB.init({appId: '00000000000000000', status: true, cookie: true, xfbml: true});
FB.getLoginStatus(function(response) {
if (response.session) {
console.log('User is logged in.');
FB.api("/me?fields=name,picture", handleMe);
}
else {
console.log('User is not logged in.');
window.location = "http://wall-et.com/index.php/test/login/";
}
});
};
答案 0 :(得分:3)
为此,您需要在页面中包含来自Facebook(可能是connect.facebook.net/en_US/all.js)的脚本。
该脚本从window.fbAsyncInit
运行window.setTimeout(..., 0)
,导致您的代码在Facebook脚本完全加载并初始化后运行。