【发布时间】:2019-06-27 01:06:48
【问题描述】:
我正在尝试将 Google 的 reCaptcha v2 invisible 集成到表单的 onsubmit 处理程序已经附加了一个执行客户端验证的功能的现有页面上。如果该函数返回true,表单将提交并重定向到另一个页面。
我现有的实现确实会强制显示 recaptcha 验证器,如果它确定您是机器人,但在表单仍然成功提交并重定向到下一页之后立即出现。
预期的结果是,如果客户端验证通过,它应该执行 recaptcha 并显示 recaptcha 验证器,如果它的启发式认为你是机器人 并且阻止表单提交,直到你通过它的验证器.
作为参考,我正在通过这种方法测试验证码:https://stackoverflow.com/a/52036368/2684075
这是实现
<form
class="elq-form"
onsubmit="return handleFormSubmit(this)"
...
>
...
</form>
...
<div
class="g-recaptcha"
data-sitekey="MY_SITEKEY"
data-callback="recaptchaOnSubmit"
data-size="invisible"
>
</div>
<script src="https://www.google.com/recaptcha/api.js" async="" defer=""></script>
<script>
function recaptchaOnSubmit() {
console.log('recaptcha success');
}
(function() {
var form = document.querySelector('.elq-form');
var originalSubmit = form.onsubmit;
form.onsubmit = null;
form.onsubmit = function() {
var isValid = originalSubmit.call(form);
if (isValid) {
window.grecaptcha.execute();
console.log('grecaptcha executed')
}
return isValid;
}
})()
</script>
【问题讨论】:
标签: javascript html forms recaptcha invisible-recaptcha