1

我在我的网站上使用了新的隐形验证码,在主页上我有两个带有验证码验证的表单。
因为我在同一页面中使用了多个 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 的索引,所以它应该可以工作,但它没有

4

1 回答 1

1

对于那些想知道如何做到这一点的人,我通过显式加载两者来使其工作,并且它工作,如下所示:

<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>
于 2018-10-09T13:52:30.280 回答