reCAPTCHA会话到期时触发事件

Jee*_*til 10 jquery recaptcha

我正在研究谷歌reCAPTCHA.它工作正常但是当reCAPTCHA会话在一定时间后到期并且用户再次单击复选框以填充reCAPTCHA时,谷歌会显示警告,说明Error: invalid load parameters.此后Nothing工作,直到用户重新加载页面.

div包含session expired消息的块具有类rc-anchor-expired-msg.我尝试div show使用此类在会话到期后立即触发事件并尝试重置recaptcha.但这也不起作用.

是否有回调函数或某些东西,我可以在会话到期时重置recaptcha.

spa*_*man 24

在渲染reCAPTCHA时,您可以传递一个expired-callback参数,然后您可以调用该grecaptcha.reset()方法.

例如:

把它放在标题中.

<script>
   var callback = function() {
      grecaptcha.render('id-of-render-element', {
         'sitekey': 'your-site-key',
         'expired-callback': expCallback
       });
   };
   var expCallback = function() {
      grecaptcha.reset();
   };
</script>
Run Code Online (Sandbox Code Playgroud)

把它放在将用于渲染reCAPTCHA的元素之后.

<div id="id-of-render-element"></div>
<script src="https://www.google.com/recaptcha/api.js?onload=callback&render=explicit" async defer></script>
Run Code Online (Sandbox Code Playgroud)

这会在每次会话到期时重置reCAPTCHA.摆脱Error: invalid load parameters.了我的警报窗口的问题.

如果它需要解释它是如何工作的,当加载api时它会callback从头文件标签中调用该函数.此函数呈现reCAPTCHA并声明为仅将reCAPTCHA重置回其原始状态expired-callbackexpCallback函数.

您应该能够data-expired-callback在自动呈现reCAPTCHA时使用标记属性(而不是像上面那样明确地呈现它),但是当我以这种方式尝试时,回调对我来说不起作用.