Невидимый ReCapcha не вызывает обратный вызов - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть настройки невидимого капчи, такие как:

<!-- CAPCHA -->
<script src="https://www.google.com/recaptcha/api.js"></script>
<div class="g-recaptcha"
    data-sitekey="6LchqW0UAAAAANOoHruD0Ql5aNJIZld4EwLiaf-W"
    data-callback="capchaDone" data-size="invisible">
</div>

И здесь определена функция обратного вызова:

window.capchaDone = function(response) {
    console.log("DONE");
    console.log("RES", response);
};

Но ничего не регистрируется. Я также попытался найти простую реализацию этого в Javascript. но нет реальной документации относительно этого

1 Ответ

0 голосов
/ 02 сентября 2018

Начиная с документации , если вы присоединяете действие к DIV, вам также нужно вызвать grecaptcha.execute(); из JavaScript для выполнения reCAPTCHA. Допустим, у вас есть такая форма:

<!-- CAPTCHA -->
<script src="https://www.google.com/recaptcha/api.js"></script>
<div class="g-recaptcha"
    data-sitekey="6LchqW0UAAAAANOoHruD0Ql5aNJIZld4EwLiaf-W"
    data-callback="capchaDone" data-size="invisible">
</div>

<form id="loginForm">
  <input type="text" name="username" id="usernameField" />
  <input type="password" name="password" id="passwordField" />
  <input type="submit" />
</form> 

И к нему прикреплен eventListener submit, вам нужно вызвать reCAPTCHA там:

document.querySelector("#loginForm").addEventListener("submit", function() {
  /** Validate input **/
  grecaptcha.execute(); // hand execution off to `data-callback`
});

После подтверждения ответа вы можете отправить форму в функции data-callback.

function capchaDone(response) {
  console.log(response)
  /** Validate reCAPTCHA **/
  document.querySelector("#loginForm").submit() // at last, submit the form
}
...