2

我正在尝试实现新的隐形 reCaptcha,但它不起作用。

首先,事件艰难我用“不可见”选项创建了一个新密钥,在我的应用程序中更改了密钥,当我查看控制台时,我可以看到这个请求:

https://www.google.com/recaptcha/api2/anchor ? k=.....

我认为这不是正确的api,对吗?

我的导入部分代码是这样的:

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

根据文档,这是正确的...

其次,我选择将验证码放在一个 div 中(根据文档可以):

<div id="captchaSignup" class="g-recaptcha" data-size="invisible" data-badge="inline"></div>

我还使用渲染函数来声明回调和站点密钥:

grecaptcha.render(document.getElementById('captchaSignup'), { 'sitekey' : '...', 'callback' : function(response) {$rs.validCaptcha=response;$s.$apply()} });

这可以用作验证码解决方案,但不能用作不可见的解决方案,因为它仍在显示框。我知道我也必须使用执行功能,但由于我仍然看到该框,我想我还没有处于那个阶段。.有人可以帮助我吗?

4

1 回答 1

6

在“不可见”recaptcha 的情况下,grecaptcha.render()api 采用可选的第三个布尔参数调用inherit并默认为false. 如果它的值被指定为true,那么只有 recaptcha 使用.g-recaptcha元素上现有的 data-* 属性来获取未在选项中指定的参数render(),否则它会将其视为缺少参数。

由于您没有通过true值传递此参数,因此它永远不会读取data-size="invisible"您在 HTML 元素上拥有的值,从而继续将其呈现为可见的 recaptcha。

尝试这个:

grecaptcha.render(document.getElementById('captchaSignup'), {
                    'sitekey' : '...',
                    'callback' : function(response) { ... }
                  }, true);       // <-- this is the change. Pass "true" here
于 2017-03-21T04:57:05.443 回答