| 123456789101112131415161718192021222324252627282930 |
- const grecaptcha = window.grecaptcha
- let recaptchaId
- const recaptchaCallbacks = []
- export async function validateCaptchaV2() {
- if (
- // Detect blocked recaptcha
- typeof grecaptcha === 'undefined' ||
- // Detect stubbed recaptcha
- typeof grecaptcha.render !== 'function' ||
- typeof grecaptcha.execute !== 'function' ||
- typeof grecaptcha.reset !== 'function'
- ) {
- return
- }
- if (recaptchaId === undefined) {
- const el = document.getElementById('recaptcha')
- recaptchaId = grecaptcha.render(el, {
- callback: token => {
- recaptchaCallbacks.splice(0).forEach(cb => cb(token))
- grecaptcha.reset(recaptchaId)
- },
- })
- }
- return await new Promise(resolve => {
- recaptchaCallbacks.push(resolve)
- grecaptcha.execute(recaptchaId)
- })
- }
|