多个不可见的recaptchas总是发送空的g-recaptcha-response

时间:2017-07-08 20:51:28

标签: invisible-recaptcha

我在我的网站上使用了新的隐形recaptcha,在主页上我有两种带有recaptcha验证的表格。
因为我在同一页面中使用了多个recaptcha,所以我不得不使用该方法并将其设置为显式 无论如何,我失去了整整一天的搜索,以了解我需要使用grecaptcha.execute()使其工作,但它甚至没有工作,我可能做错了,但我不知道究竟是什么,这里有一些代码:

 <script type="text/javascript" charset="utf-8">

  var onloadCallback = function() {
    var recaptchas = document.querySelectorAll('div[class=g-recaptcha]');

   for( i = 0; i < recaptchas.length; i++) {
     grecaptcha.render( recaptchas[i].id, {
       'sitekey' : '',
       'badge' : 'inline',
       'size' : 'invisible'
      });
     grecaptcha.execute(i);
   }
 }
</script>

我正在使用它的形式:

<div class="g-recaptcha" id="rc1"></div>

在页面的最后:

<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>

我真的不知道为什么它现在不工作,我已经将grecaptcha.execute设置为“i”,因为我已经读过它是一个基于0的索引,所以它应该可以工作,但它不会

1 个答案:

答案 0 :(得分:0)

对于那些想知道如何做的人,我通过显式加载两者使其工作,如下所示:

<script src="https://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script>    
<script>
      var recaptcha1;
      var recaptcha2;
      var myCallBack = function() {
        //Render recaptcha1 on element with ID "recaptcha1"
        recaptcha1 = grecaptcha.render('recaptcha1', {
          'sitekey' : 'your-site-key',
          'theme' : 'light'
        });

        //Render recaptcha2 on element with ID "recaptcha2"
        recaptcha2 = grecaptcha.render('recaptcha2', {
          'sitekey' : 'your-site-key',
          'theme' : 'light'
        });
      };
</script>