2017-10-20 39 views
6

Mam kilka formularzy na stronie internetowej i niewidzialnego Google reCAPTCHA. Od czasu do czasu coś idzie nie tak i wyświetlany jest alert: "Nie można skontaktować się z reCAPTCHA. Sprawdź połączenie i spróbuj ponownie.". Próbowałem ukryć te wiadomości, zastępując funkcję alertu:Jak zatrzymać wyświetlanie alertów przez Google reCAPTCHA?

<script> 
    var _alert = window.alert; 
    window.alert = function(text) { 
     if(text.indexOf("reCAPTCHA") === -1){ 
      _alert(text); 
     } 
     return true; 
    }; 
</script> 

Jednak to nie działa. Alerty są nadal wyświetlane. To jest kod, którego używam do wywoływania reCAPTCHA. Używam prawdziwego klucza witryny zamiast MY_SITE_KEY:

<script> 
    var widgetNewsletter; 
    var widgetRegistration; 
    var captchaCallback = function() { 
     widgetNewsletter = grecaptcha.render('subscriptionSubmit', { 
      'sitekey' : 'MY_SITE_KEY', 
      'callback' : function() { 
       document.getElementById("newsletter-validate-detail").submit(); 
      } 
     }); 
     if(document.getElementById("registerFormSubmit") !== null) { 
      widgetRegistration = grecaptcha.render('registerFormSubmit', { 
       'sitekey' : 'MY_SITE_KEY', 
       'callback' : function() { 
        document.getElementById("form-validate").submit(); 
       } 
      }); 
     } 
    }; 
</script> 
<script src='https://www.google.com/recaptcha/api.js?onload=captchaCallback&render=explicit' async="false" defer></script> 

Jak mogę zatrzymać wyświetlanie alertów?

+0

Zostało już odpowiedział: https://stackoverflow.com/questions/48003527/cannot-contact-recaptcha-check-your-connection-and-try-again –

+1

link w poprzednim komentarzu nie jest odpowiedzią na to pytanie. To dotyczy zatrzymania błędu. To pytanie dotyczy zatrzymywania błędów pojawiających się jako Alert() * fuj! *. – jwinn

Odpowiedz

0

Zgodnie z document można przekazać komunikat o błędzie podczas wywoływania funkcji render(). Wywołanie zwrotne błędu zostanie wykonane, gdy reCAPTCHA napotka błąd (zazwyczaj połączenie sieciowe) i nie może kontynuować, dopóki nie zostanie przywrócona łączność. Więc twój kod będzie wyglądać następująco

widgetNewsletter = grecaptcha.render('subscriptionSubmit', { 
     'sitekey' : 'MY_SITE_KEY', 
     'callback' : function() { 
      document.getElementById("newsletter-validate-detail").submit(); 
     }, 
     'error-callback': function(){ 
      //show error message 
     } 
    }); 
Powiązane problemy