10

Invisible reCAPTCHA 可让您在成功验证后轻松设置回调:

<button class="g-recaptcha" data-sitekey="your_site_key" data-callback='successfulVerification()'>Submit</button>

但是,如果用于进一步验证的模式已关闭(或者 reCAPTCHA 无法验证您是人类 - 实际上不确定这是否会发生,也许它只是一直显示,它似乎没有任何选项来触发回调你永远是新的挑战?)

这很重要的原因是我们有一个加载微调器或某种视觉提示来向用户显示我们正在处理提交。如果 reCAPTCHA 无法自动确定用户确实是人类,则将显示模式 - 现在如果用户成功完成它,那很好 - 但如果他/她退出它,加载微调器仍然可见,因为它没有'不知道 reCAPTCHA 失败/用户退出了它。

一种解决方法是仅在 reCAPTCHA 成功并且请求开始后才显示加载微调器- 但是这对用户来说将是一个糟糕的体验,因为在单击按钮和“出现”要提交的表单之间会有延迟 - 离开用户可能想知道表单是否实际提交。

关于如何解决这个问题的任何想法?谢谢!

4

1 回答 1

1

我还没有找到解决方案,但黑客解决方法是在超时后重新启用提交按钮,这样至少如果用户取消 recaptcha 尝试,他们不会无限期地被锁定。

var timeout = setTimeout(function () { enableSubmit(); }, 3000);
grecaptcha.render(elem, {
    ...
    callback: function (token) {
        clearTimeout(timeout);
        continueWithSubmission();
    }
});
grecaptcha.execute();
于 2017-12-23T03:49:44.763 回答