不可见的ReCapcha不调用回调

时间:2018-09-02 13:40:57

标签: javascript recaptcha invisible-recaptcha

我有这样的隐形验证码设置:

<!-- 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 :(得分:1)

Documentation开始,如果将操作附加到DIV,则还必须从JavaScript调用grecaptcha.execute();,以执行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> 

并附加了一个提交事件监听器,您必须在其中调用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
}