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

问题描述 投票:8回答:1

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

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

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

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

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

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

javascript recaptcha invisible-recaptcha
1个回答
1
投票

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

var timeout = setTimeout(function () { enableSubmit(); }, 3000);
grecaptcha.render(elem, {
    ...
    callback: function (token) {
        clearTimeout(timeout);
        continueWithSubmission();
    }
});
grecaptcha.execute();
© www.soinside.com 2019 - 2024. All rights reserved.