diff --git a/.gitignore b/.gitignore index 2ba4789..aae8bb8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ node_modules package-lock.json dev/ -.vscode/ \ No newline at end of file +.vscode/ +.idea \ No newline at end of file diff --git a/src/lib/recaptcha.js b/src/lib/recaptcha.js index c5d32fb..9d3afa7 100644 --- a/src/lib/recaptcha.js +++ b/src/lib/recaptcha.js @@ -9,7 +9,7 @@ export default async function recaptcha(siteKey, reload) { // 载入 reCAPTCHA - if (window.DETALK_INIT && !window.DETALK_INIT.recaptchaLoaded) { + if (window.DETALK_INIT && !window.DETALK_INIT.recaptchaLoaded && !window.grecaptcha) { let script = document.createElement('script'); script.src = 'https://www.recaptcha.net/recaptcha/api.js?render=' + siteKey || window.DETALK_RECAPTCHA_SITE_KEY; script.async = true; @@ -18,9 +18,17 @@ export default async function recaptcha(siteKey, reload) { grecaptcha.ready(function() { grecaptcha.execute(siteKey || window.DETALK_RECAPTCHA_SITE_KEY, {action: 'DetalkJS'}).then(function(token) { window.DETALK_RECAPTCHA_TOKEN = token; + window.DETALK_INIT.recaptchaLoaded = true; }); }); } document.body.appendChild(script); + } else if (window.DETALK_INIT.recaptchaLoaded || window.grecaptcha) { + // 有 reCAPTCHA script, 直接执行 + grecaptcha.ready(function() { + grecaptcha.execute(siteKey || window.DETALK_RECAPTCHA_SITE_KEY, {action: 'DetalkJS'}).then(function(token) { + window.DETALK_RECAPTCHA_TOKEN = token; + }); + }); } } \ No newline at end of file