微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐