Я привязан, и Javascript мир это очень странно.
Мне нужно создать форму с токеном reCAPTCHA v3 разрешено раньше приступаем к отправке формы. Поскольку некоторые события привязаны к форме submit
event, событие l oop должно ждать, пока оно не будет разрешено, иначе оно завершится ошибкой:
- Некоторые формы имеют события проверки, которые препятствуют отправке если есть ошибки (например, недопустимое значение внутри ввода).
- Если пользователь щелкает форму слишком быстро (благодаря автозаполнению) при загрузке страницы, а токен все еще не извлекается, запрос возвращает ошибку.
Пока я пытаюсь сделать, это иметь слушателя для события 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.
});