2017-10-20 121 views
6

我在網站上有一些表單和Google無形的reCAPTCHA。有時出現問題並顯示警告:「無法聯繫reCAPTCHA,請檢查您的連接並重試。」我試圖通過覆蓋警報功能隱藏這些消息:如何阻止Google reCAPTCHA顯示提醒?

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

但是,它不起作用。警報仍然顯示。 這是我用來調用reCAPTCHA的代碼。我用真正的網站鍵代替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> 

如何才能停止警報出現?

+0

這已經被回答:https://stackoverflow.com/questions/48003527/cannot-contact-recaptcha-check-your-connection-and-try-again –

+1

的以前的評論中的鏈接不是這個問題的答案。這涉及阻止錯誤發生。這個問題是關於阻止錯誤顯示爲Alert()* yuck!*。 – jwinn

回答

0

根據document,您可以在調用render()函數時傳遞錯誤回調。錯誤回調將在reCAPTCHA遇到錯誤(通常是網絡連接)時執行,並且在連接恢復之前無法繼續。所以,你的代碼看起來像這樣

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