Javascript execute()在用户质询之前调用数据回调

Javascript execute()在用户质询之前调用数据回调,javascript,recaptcha,Javascript,Recaptcha,我想以编程方式调用不可见的reCaptcha挑战。 根据,我编写了以下代码: <html lang="en"> <head> <meta charset="UTF-8"> <title>reCaptcha test</title> <script> function onReCaptchaSubmit(token) { alert("reCaptcha chal

我想以编程方式调用不可见的reCaptcha挑战。 根据,我编写了以下代码:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>reCaptcha test</title>
    <script>
        function onReCaptchaSubmit(token) {
            alert("reCaptcha challenge response:\n" + token);
        }
    </script>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <style>
        .grecaptcha-badge {
            display: none;
        }
    </style>
</head>

<body>

<a href="javascript:void(0);" onclick="grecaptcha.execute();">Challenge</a>

<div class="g-recaptcha"
     data-sitekey="*******"
     data-callback="onReCaptchaSubmit"
     data-size="invisible">
</div>

</body>
</html>

雷帕查试验
函数onRecaptChasSubmit(令牌){
警报(“reCaptcha质询响应:\n”+令牌);
}
grecaptcha先生徽章{
显示:无;
}
grecaptcha.execute(),以显示reCaptcha挑战弹出窗口。在大多数情况下,它运行良好。但有时,在调用
grecaptcha.execute()之后
,它在不显示reCapcha弹出窗口和用户质询的情况下,回调onReCaptchaSubmit()


我怎样才能修好它?

提前感谢。

因为recaptcha有一个过期时间,所以您必须等到您的recaptcha会话过期,或者调用
grecaptcha.reset()
OnReCAPTChasSubmit
中,以确保每次用户单击链接时都出现用户挑战:

function onRecaptchaSubmit(token) {
  /* any behavior you want */
  //...
  window.grecaptcha.reset();
}

您希望每次调用
grecaptcha.execute()
时,invisible reCaptcha都会显示用户质询,但它不是这样工作的。以我的经验,只有当它怀疑你时,它才会显示出挑战。如果谷歌确定你是人类,它将跳过显示用户质询并继续回调。

你可能不想使用真正的sitekey。@ColeCm,谢谢,我删除了它。我做了你的解决方法,似乎问题已经解决,但经过几次测试,我意识到问题没有解决。你认为,这是一种重新捕获行为还是其他什么?这也是我的经验-隐藏的验证码只会挑战你,如果它认为你是一个机器人。