使用FB后,不能在iframe应用程序中编辑输入字段.登录Firefox浏览器

Can't edit input fields inside iframe app after using FB.login on Firefox

本文关键字:输入 编辑 字段 登录 浏览器 Firefox 应用程序 FB 不能 iframe 使用      更新时间:2023-09-26

我面临的问题是,当我使用Firefox在我的Facebook iframe应用程序内使用FB.login时,我无法编辑任何输入字段。奇怪的是,只要我将焦点设置在iframe之外的任何地方(例如Facebook或Firefox),然后更改回iframe中的输入字段,我就可以再次编辑它们。

在Facebook之外的FB.login没有问题(当页面被直接调用时),这只发生在Firefox上,在其他浏览器上它工作得很好(在Chrome和Safari上测试)。所以我猜这是火狐造成的。

我剥离了整个代码,只在一个只有三个输入字段的简单HTML页面上使用Facebook JS SDK和jQuery。

jQuery(document).ready(function(e) {
    $('a.facebookconnect').bind('click', function(e){
        e.preventDefault();
        FB.login(function(response) {
            console.log(response);
            if (response.authResponse) {
                $('.loggedin').show();
            }
        }, {scope: 'email'});
    });
});
window.fbAsyncInit = function() {
    FB.init({
        appId      : '###',
        status     : true,
        cookie     : true,
        xfbml      : true
    });
    FB.Event.subscribe('auth.statusChange', function(response) {
        if (response.authResponse) {
            FB.api('/me', function(me){
                if (me.name) {
                    $('.displayname').text(" as " + me.name);
                    $('#name').val( me.name );
                    $('#email').val( me.email );
                }
            })
        }
    });
};

编辑:这只发生在用户之前已经接受应用程序的情况下(模式弹出窗口打开,然后立即关闭)。当他需要授权应用程序时,它可以正常工作。

尝试将window.parent.focus()放在这行后面:$(" #电子邮件")。瓦尔(我。电子邮件);

if (me.name) {
    $('.displayname').text(" as " + me.name);
    $('#name').val( me.name );
    $('#email').val( me.email );
    window.parent.focus();
}

我也遇到过同样的问题——无法将焦点放在输入字段上,直到我选择了FB.api中的父窗口。