0

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

在 Facebook 之外(直接调用页面时)没有问题,FB.login这只发生在 Firefox 上,在其他浏览器上它工作正常(在 Chrome 和 Safari 上测试)。所以我猜这是由Firefox引起的。

我剥离了整个代码,只在一个只有三个输入字段的简单 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 );
                }
            })
        }
    });
};

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

4

1 回答 1

2

尝试将window.parent.focus()放在此行之后: $('#email').val( me.email );

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

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

于 2013-06-21T12:52:52.677 回答