每次我通过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()也不起作用)
希望你能帮助我......并为长篇文章感到抱歉!
非常感谢!