События на клиентской стороне ReCaptcha v2

Предоставляет ли ReCaptcha v2 какие-либо клиентские события? Я специально пытаюсь определить, когда ответ Captcha был возвращен после того, как поставлен флажок, поэтому я могу открыть кнопку "Продолжить" ниже.

enter image description here

Без этого пользователь может установить флажок, а затем быстро нажать кнопку "Отправить", прежде чем ответ на код с проверкой вернется.

Я мог бы добавить свой собственный обработчик события click к классу recaptcha-checkbox-checkmark и опрашивать видимость тика, я просто удивился, есть ли более простой способ сделать это?

$(".recaptcha-checkbox-checkmark").click(function() {
    //...Poll for visibility of tick
});

Ответы

Ответ 1

Вы можете настроить reCAPTCHA, чтобы дать обратную реакцию при успешной проверке, используя атрибут обратного вызова данных в теге g-recaptcha или через параметр "обратный вызов", если используется явный рендеринг.

См https://developers.google.com/recaptcha/docs/display#render_param

Пример использования явного рендеринга:

var myCallback = function(val) { console.log(val); };
grecaptcha.render(
   document.getElementsById('my-recaptcha-placeholder'), 
   {
     callback: myCallback, 
     sitekey: mySiteKey
   });

Ответ 2

Другим решением является установка data-callback непосредственно на div g-recaptcha, как этот

<script type="text/javascript">
  var imNotARobot = function() {
    console.info("Button was clicked");
  };
</script>

<div class="g-recaptcha" data-callback="imNotARobot" data-sitekey="key"></div>