G+ 登录按钮回调绑定两次
G+ sign-in button callback binding twice
我正在为我的网站使用 G+ 登录,但我发现了这个问题。
我的网站有工具栏(它使用 Javascript 渲染)和 G+ 登录按钮,所以我在工具栏文件中附加了 G+ Javascript API
[工具栏-不登录.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(),但登录按钮不起作用。
有什么办法可以解决它吗?谢谢。
这里有点新手,但我记得在某处读到,在某些情况下,您可能会意外地多次调用调用该函数,因为它绑定到多个元素。您是否尝试过在声明事件处理程序之前直接删除它?
这样,如果已经有一个实例,它将在添加另一个实例之前被删除。
像这样的东西
$('#randomID').unbind('submit').bind('submit');
相关文章:
- 如何使用角度两个绑定来动态创建的剑道网格
- 主干.js绑定到集合“添加”呈现视图两次
- AngularJs一次绑定和布尔运算符的值顺序
- 绑定两次或更多次的事件 jquery
- 如何将一个事件绑定两次到 JavaScript 插件
- 多次绑定 jStepper 到输入元素
- 反应式,<输入>上的两个绑定
- G+ 登录按钮回调绑定两次
- 由于 ID 更改绑定,主干视图呈现两次
- 主干路由绑定,但触发两次
- 是两个相等的jQuery.on事件绑定了两次
- 我有两个绑定函数,当我运行它们时,它'It’很慢
- 为什么同一函数的两个绑定返回不同的值
- 在JavaScript中,第一个绑定决定了谁“;这个“;是(绑定两次或第二次并不重要)
- 在knockoutjs中绑定两次自定义处理程序
- 自定义指令在ng-if中第二次绑定不正确
- 为什么绑定事件在jQuery中激活两次
- 当与ngIf指令组合时,一次绑定重新计算变量是否正确?-AngularJS
- KnockoutJS在第二次绑定后复制UI中的数据
- 在JavaScript中多次绑定事件监听器