在我的母版页中,我有以下代码:
<body>
<div id="fb-root">
</div>
<script>
window.fbAsyncInit = function () {
FB.init({
appId: "xxx",
channelUrl: "/xd_receiver.htm",
xfbml: false
});
};
</script>
....
</body>
在一个单独的 .js 文件中,我的 facebook 代码如下:
var Facebook = function () {
var pub = {};
var priv = {};
pub.Login = function () {
return priv.FacebookLogin();
};
priv.FacebookLogin = function () {
FB.login(function (response) {
if (response.authResponse) {
FB.api('/me', function (response) {
console.log("you are logged in");
return response;
});
}
});
};
return pub;
};
现在我的问题是,使用这样的代码,调用调用 FacebookLogin 函数的 Login 将返回控制台消息,即 login 在 init 之前调用,即使 init 就在 fb 说它应该在的位置,就在标签之后。我测试将我的 init clal 放在我的 FB.login 上方,然后它再次工作,所以 placemet 出了点问题。以前我在标签中链接了 js 文件(包含 facebook 函数),但我也尝试将它放在 init 脚本之后,但我遇到了同样的错误。(facebook函数的调用在一个链接的js文件中,有关系吗?)
任何想法为什么我收到此错误消息,FB.login() 在 FB.init() 之前调用?