fb登录弹出框

我正在使用fb登录功能,但我遇到的问题是,每当我在页面媒体加载完成前单击fb登录按钮时,它会阻止fb登录弹出窗口,但如果我在第二次传递到加载事件后单击fblogin,它就会工作

以下是我正在使用的函数:

函数fb\u login(){
var电子邮件=“”;
log(loginClassbackQueue);
//log('用户希望使用fb登录');
FB.getLoginStatus(函数(响应){
if(response.status!=“已连接”){
FB.登录(功能(响应){
//控制台日志(响应);
if(response.authResponse){
//console.log(“用户成功登录”);
//控制台日志(响应);
电子邮件=更新数据登录(响应);
$('#fb#u login_popup,#popup_overlay').hide();
//登录(电子邮件);
} 
否则{
loginClassbackQueue=[];
//log('用户登录失败');
}
//console.log(“fb登录成功完成”);
},{范围:“电子邮件、用户生日、用户喜好、用户位置、朋友喜好、发布动作”}
);
}
否则{
//登录控制台(“已连接”);
电子邮件=更新数据登录(响应);
$('#fb#u login_popup,#popup_overlay').hide();
}
});
}

当我在这个网站上做同样的动作http://fab.com/ 它打开的弹出窗口永远不会阻止弹出窗口

您不能从FB.getLoginStatus的回调调用FB.login

浏览器倾向于阻止弹出窗口,因为弹出窗口不是用户单击操作的直接结果

由于FB.getLoginStatus执行ajax调用,并且您在响应时调用FB.login,因此此调用将打开的弹出窗口被阻止

问题的解决方案是在页面加载时调用FB.getLoginStatus,并在FB\u login()方法中使用响应

发表评论