G +登录按钮回调绑定两次

时间:2013-09-24 04:13:30

标签: javascript google-plus

我正在使用G +登录我的网站,我发现了这个问题。

我的网站有工具栏(用Javascript渲染)和G +登录按钮,所以我在工具栏文件中附加了G + Javascript API

[工具栏-notlogin.php]

<script>
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js?onload=render';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();

function render () 
{
        var config = {
            "callback": "loginCallback",
            "clientid": "xxxxxxxxx.apps.googleusercontent.com",
            "cookiepolicy": "single_host_origin",
            "requestvisibleactions": "http://schemas.google.com/AddActivity",
            "scope": "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.email"
            };

            $('#googleCustomLoginBtn .buttonText').text('Login with Google');
            gapi.signin.render ("gplusLoginBtn", config);
        }
</script>

当工具栏(带有G + JS API)加载时,调用回调函数render()来渲染G +登录按钮。它工作得非常好,所以我的工具栏变为登录状态(显示用户的个人资料)和G +登录按钮消失(HTML替换)。

当用户注销工具栏时,将状态更改为不登录(再次替换HTML),再次调用render()并登录按钮。

但问题是我这次签到回调函数(loginCallback())调用两次。似乎回调函数再次绑定。 (我尝试不再在第二次调用render(),但登录按钮不起作用。)

有什么办法可以解决吗?谢谢。

1 个答案:

答案 0 :(得分:1)

这里有点新手,但我记得在某处读过有些情况,你可能不小心调用了多次调用函数,因为你已经绑定了多个元素。您是否尝试在声明之前直接删除事件处理程序?

这样,如果已经存在它的实例,则在添加另一个实例之前将删除它。

像这样的东西

$('#randomID').unbind('submit').bind('submit');