флажок reCaptcha вращается в течение 15 секунд, затем остается не проверенным - PullRequest
0 голосов
/ 11 октября 2018

Я разместил reCaptcha на сайте.ReCaptcha загружается без проблем, но как только вы нажимаете на флажок, он вращается в течение 15 секунд и остается непроверенным.Это также не делает никакого фонового подключения (POST) к Google, чтобы оценить щелчок (должен произойти).

reCaptcha spinning without success

Я добавил это в шапкувеб-сайта, и это первый загруженный скрипт.

<script src='https://www.google.com/recaptcha/api.js'></script>

Я также добавил это поле в форму входа в систему:

<div class="g-recaptcha" data-sitekey="6LcGv3MUAAAAALdBp38mExUgAAAAAAH_IX522Gr" style="transform:scale(0.75);transform-origin:100% 0;"></div>

Нет активности сети (в сетивкладка инструментов разработчика), когда я нажимаю флажок, и единственное, что я вижу на вкладке консоли, это 2 странные ошибки от reCaptcha:

Developer tools console

Я ставлюпустая HTML-форма с вышеуказанными изменениями на том же домене и сервере, и reCaptcha работает.Поэтому я предполагаю, что это какой-то конфликт с моим большим существующим кодом (html и javascript).Как я могу найти или решить конфликт?

1 Ответ

0 голосов
/ 29 мая 2019

Я решил это на своем сайте, переключившись на явный рендеринг:

<script src="https://www.google.com/recaptcha/api.js?onload=recaptchaOnLoad&render=explicit" async defer></script>

...

<div id="recaptcha"></div>

Я использую recaptchaOnLoad для сброса глобальной переменной recaptcha_rendered,потому что мое резюме находится на второй странице мастера jQuery Steps , который, как мне кажется, сбивает с толку автоматический рендеринг.Мне, вероятно, не нужна эта функция (на которую также ссылается тег script, используемый для загрузки API recaptcha выше), но она не приносит никакого вреда:

function recaptchaOnLoad() {
    recaptcha_rendered = false;
}

Когда мастер переключается настраницу, содержащую recaptcha, я сбрасываю или отображаю с помощью:

if( recaptcha_rendered ) {
    grecaptcha.reset();
} else {
    grecaptcha.render( 'recaptcha', {
        'sitekey': 'my-site-key',
        'callback': 'recaptchaOnData',
        'expired-callback': 'recaptchaOnExpiry'
    } );
    recaptcha_rendered = true;
}

Теперь он работает каждый раз.

...