如何同步等待reCAPTCHA v3令牌?

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

我处于绑定状态,并且Javascript世界非常奇怪。

我需要使用reCAPTCHA v3令牌制作一个表单已解决,然后再继续提交表单。由于某些事件绑定到submit形式的事件,因此事件循环必须等待,直到它解决为止,否则它将失败:

  • 某些表单具有验证事件,如果有错误(例如输入中的无效值),该验证事件防止提交]。
  • 如果在页面加载时用户单击表单的速度过快(由于自动完成),并且仍未检索到令牌,则请求将返回错误。
  • 尽管我想做的是为submit事件提供一个监听器,该事件在阻止其他提交之前,直到令牌被解析

,然后再继续其他监听器。

当前reCAPTCHA脚本上的文档为零,并且我还没有找到一种可靠而又切实地强制解析令牌的方法。 reCAPTCHA脚本是异步的,所以没有办法等到令牌解析完之后才可以使用

// Let's retrieve the form by its id.
let form = document.getElementById('example_form');

let addToken = (form) => {
    grecaptcha.execute('site_key', {
        // some options
    }).then(token => {
        // Include the token as an input inside the form so it's sent.
    });
};

form.addEventListener('submit', () => {
    return addToken(form); // <-- This won't work, since it's async.
});

我处在束缚之中,在Javascript世界中,这很奇怪。我需要先解决reCAPTCHA v3令牌,然后再进行表单提交。由于某些事件已绑定到表单Submit ...

javascript asynchronous async-await javascript-events recaptcha
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.