我正在尝试在混合应用程序中添加一个谷歌登录按钮。它在按钮时正确呈现
<div class="g-signin2" data-onsuccess="onSignIn"></div>
在初始页面中,但是当页面不是第一个加载时(顺便说一句,页面是通过 ajax 加载的),按钮无法呈现。有关更多信息,我正在使用Framework7,但我认为问题与框架无关,而是与我的错误逻辑有关。我正在按照谷歌开发人员的说明进行操作。
我正在尝试在混合应用程序中添加一个谷歌登录按钮。它在按钮时正确呈现
<div class="g-signin2" data-onsuccess="onSignIn"></div>
在初始页面中,但是当页面不是第一个加载时(顺便说一句,页面是通过 ajax 加载的),按钮无法呈现。有关更多信息,我正在使用Framework7,但我认为问题与框架无关,而是与我的错误逻辑有关。我正在按照谷歌开发人员的说明进行操作。
您可以onPageInit
按照Framework7 文档中的说明使用:
myApp.onPageInit(pageName, function(page) {
var script = document.createElement('script');
script.src = 'https://apis.google.com/js/platform.js';
document.body.appendChild(script);
});
当动态加载 div 元素时它不起作用,因为 Google 登录脚本g-signin2
在执行时查找带有 -class 的标签,因为它尚未加载到 DOM 树中,所以它找不到。
相反,您可以gapi.signin2.render
在 AJAX 调用完成后使用该函数呈现按钮。例如,如果您的占位符标记具有 id div_tag_id
,在 JavaScript 中:
gapi.signin2.render("div_tag_id", {
"scope": "profile email openid",
"width": 200,
"height": 40,
"longtitle": true,
"theme": "dark",
"onsuccess": function (googleUser) {
// Called when the user signs in
},
"onfailure": function (e) {
console.warn("Google Sign-In failure: " + e.error);
}
});
在隐身模式下使用谷歌浏览器,你会得到它的工作原理