Fan*_*ane 14 javascript recaptcha
我有以下内容 <body>
<div class="g-recaptcha" data-sitekey="some-key (original is right)">
Run Code Online (Sandbox Code Playgroud)
这是我的 <head>
<script src="//www.google.com/recaptcha/api.js"></script>
Run Code Online (Sandbox Code Playgroud)
但无论是在firefox还是chrome上都没有显示......这是一个已知的问题吗?
确保这<script src="//www.google.com/recaptcha/api.js"></script>是关闭head标签之前的最后一件事.这对我来说解决了同样的问题
刚遇到这个障碍,就我而言,这是由于 AngularJS。它不仅限于 Angular,任何在页面加载后绑定元素的库都可能导致 Google reCAPTCHA 不显示,因为在执行 Google 的代码时该元素不存在。
要解决此问题,请首先使渲染显式并在 reCAPTCHA 加载时提供要执行的函数:
<script src='https://www.google.com/recaptcha/api.js?onload=recaptchaOnload&render=explicit' async defer></script>
Run Code Online (Sandbox Code Playgroud)
现在,为容器添加一个唯一的 ID,例如
<div id="recaptcha" class="g-recaptcha" data-sitekey="site key here"></div>
Run Code Online (Sandbox Code Playgroud)
然后在自定义函数中等待元素实际存在:
var _captchaTries = 0;
function recaptchaOnload() {
_captchaTries++;
if (_captchaTries > 9)
return;
if ($('.g-recaptcha').length > 0) {
grecaptcha.render("recaptcha", {
sitekey: 'site key here',
callback: function() {
console.log('recaptcha callback');
}
});
return;
}
window.setTimeout(recaptchaOnload, 1000);
}
Run Code Online (Sandbox Code Playgroud)
这将持续尝试 10 秒,直到找到该元素,然后将 reCAPTCHA 渲染到其中。
小智 -4
改变:
<script src="//www.google.com/recaptcha/api.js"></script>
Run Code Online (Sandbox Code Playgroud)
到:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
Run Code Online (Sandbox Code Playgroud)
我不知道这是否只是一个错字,如果不是,添加https:肯定会解决您的问题。