Facebook JS SDK可以防止DOM元素被修改

时间:2015-05-07 07:47:58

标签: javascript jquery facebook facebook-graph-api

每次我通过jQuery编辑时,Facebook JS SDK都会重新绘制我的“通过Facebook登录”按钮。

让我来描述问题的情景:

我已经制作了自己的“通过Facebook登录”按钮,其中包含HTML& CSS(因此,我没有使用facebook插件按钮的默认登录)。

<button id='signin-by-facebook' class='js-facebook-connect' type='button'>
    <i class='icon icon-svg-facebook'></i>
    <span>Sign in with <strong>Facebook</strong></span>
</button>

当DOM准备就绪时,我附加一个“onclick”处理程序,它调用FB的SDK login()函数,并将jQuery()。prop('disabled',true)应用于它,到目前为止一直很好,按钮是按预期禁用。

$(document).ready(function()
{
    $('#signin-by-facebook').click(function(event)
    {
        var _this = $(this);

        // Let's disable the button 
        // while login popup is active
        _this.prop('disabled', true);
        FB.login(function(response)
        {
             if (response.authResponse)
             {
                   // OK
                   [...]
             }

             else
             {
                 // Error...
                 // (I know it's not always error,
                 // but will do for the example)

                 _this.prop('disabled', false);
                 console.log('This is called!');
             }
        }
    });
});

现在问题就开始了。如果由于某种原因用户关闭FB登录弹出窗口,则错误回调正在执行jQuery()。prop('disabled',false)但该按钮仍然被禁用!

我得出的结论是,FB的SDK正在重绘/阻止按钮以某种奇怪的方式被改变。

我在互联网上搜索了一个解决方案,但我一无所获。

所以,我的问题是: 使用jQuery.prop('禁用',false)禁用该按钮后,如何重新启用它? (jQuery.removeProp()/ removeAttr()也不起作用)

希望你能帮助我......并为长篇文章感到抱歉!

非常感谢!

0 个答案:

没有答案