Marketo的onValidate()
函数不适用于Google Recaptcha v3的grecaptcha.execute()
。我已将Submittable设置为false,并且当marketo验证触发时,即使我使用了异步等待,它也不会等待grecaptcha.execute()
返回。
<script>
MktoForms2.whenReady(function (mktoForm) {
mktoForm.submittable(false);
mktoForm.onValidate(async function (native) {
if (!native) return;
const recaptchaToken = await grecaptcha.execute(userConfig.apiKeys.recaptcha, {
action: userConfig.actions.formSubmit
});
mktoForm.addHiddenFields({ "Recaptcha": recaptchaToken });
if (recaptchaToken.length) {
mktoForm.submittable(true);
} else {
mktoForm.submittable(false);
}
});
})
</script>
onValidate()
在返回之前应等待recaptchaToken解析,但是它绕过await
,每次都使用marketo的subbmittable作为false
。