首页 文章

失败或退出时看不见的reCAPTCHA回调

提问于
浏览
8

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

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

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

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

一种解决方法是仅在reCAPTCHA成功并且请求开始后显示加载微调器 - 但是这对用户来说是一种糟糕的体验,因为在单击按钮和要提交的表单"appearing"之间会有延迟 - 让用户离开可能想知道表格是否真的提交过 .

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

1 回答

  • 1

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

    var timeout = setTimeout(function () { enableSubmit(); }, 3000);
    grecaptcha.render(elem, {
        ...
        callback: function (token) {
            clearTimeout(timeout);
            continueWithSubmission();
        }
    });
    grecaptcha.execute();
    

相关问题