我正在使用 fb 登录功能,但问题是每当我在页面媒体加载完成之前单击 fb 登录按钮时,它会阻止 fb 登录的弹出窗口,但是如果我在一秒钟后单击 fblogin加载事件有效
这是我正在使用的函数:
function fb_login() {
var email='';
console.log(loginClassbackQueue);
// console.log('user wants to login with fb');
FB.getLoginStatus(function(response) {
if(response.status!='connected'){
FB.login(function(response) {
// console.log(response);
if (response.authResponse) {
// console.log('user logged in successfully');
// console.log(response);
email = update_f_data_login(response);
$('#fb_login_popup, #popup_overlay').hide();
// loginme(email);
}
else {
loginClassbackQueue = [];
// console.log('user failed to login');
}
// console.log('fb login completed successfully');
}, {scope:"email,user_birthday,user_likes,user_location,friends_likes,publish_actions"}
);
}
else{
// console.log('logged in and connected');
email = update_f_data_login(response);
$('#fb_login_popup, #popup_overlay').hide();
}
});
}
我在这个网站上做同样的 Action http://fab.com/它总是打开弹出窗口,永远不会阻止弹出窗口。
最佳答案
您不能从 FB.getLoginStatus
的回调中调用 FB.login
。
浏览器倾向于阻止弹出窗口,因为弹出窗口不是用户点击操作的直接结果。
因为 FB.getLoginStatus
执行了一个 ajax
调用,并且您在它的响应上调用了 FB.login
,结果会打开弹出窗口此调用的一部分被阻止。
您的问题的解决方案是在页面加载时调用 FB.getLoginStatus
并在您的 fb_login()
方法中使用响应。
关于javascript - fb 登录弹出 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16559115/