javascript - fb 登录弹出 block

标签 javascript jquery facebook fbml fbconnect

我正在使用 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/

相关文章:

javascript - 在弹出窗口中显示带有 Ajax 数据源的 jQuery DataTables

javascript - 如何在 JavaScript 中自发获取多个输入

php - 从 Facebook Graph API 获取第三方帖子

javascript - 使用 Facebook 数据填写表格

Javascript 加密

javascript - AngularJS路由服务器端支持(NodeJS+express)

javascript - js 提示验证三个单词之一

javascript - 通过Javascript避免在html列表中的列表中重复

javascript - 自动幻灯片按钮计时问题

html - 自定义 Facebook 选项卡上的奇怪边框问题