javascript – reCaptcha小部件不会过期,永远不会调用过期的回调

我无法在我的ajax联系表单中集成reCaptcha.只有在用户完成挑战后的前2分钟才有效. ReCaptcha在2分钟后过期.问题是小部件是完整的,没有像“会话过期.再次完成挑战”.用户无法执行任何操作,但会重新加载页面.此外,不调用过期回调(显然,因为小部件不会过期).

我可以在完成后设置一个计时器2分钟来重置小部件.这可行,但它有点hacky,如果谷歌选择改变未来的到期时间.任何想法为什么它不会过期?

我尝试了两种集成窗口小部件的方法(自动和显式)

编辑:
这是代码,我做了一个小例子html文件并证明它不起作用.

<html>
<head></head>

<body>

        <div id="google-recaptcha-widget"></div>

<script>
        var expiredCallback = function() {
            alert('expired!');
        }

        var recaptchaLoad = function() {

                grecaptcha.render('google-recaptcha-widget',{
                        'sitekey' : 'mysitekey'
                        'expired-callback': expiredCallback
                });

        }

</script>

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

</body></html>

解决方法

<div id="google-recaptcha-widget" class="g-recaptcha" data-sitekey="mySiteKey" data-callback="myCallbackMethod" data-expired-callback="expiredCallback"></div>

<script>
    function myCallbackMethod() {
        // save the world
    }

    function expiredCallback() {
        // Uh oh,reCAPTCHA expired,hack the world
    }
</script>

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...