2015-06-14 359 views
5

我已經在我的<body>谷歌驗證碼不顯示

<div class="g-recaptcha" data-sitekey="some-key (original is right)"> 

並且在這之後我<head>

<script src="//www.google.com/recaptcha/api.js"></script> 

,但沒有顯示,無論是在Firefox或Chrome ......這是一個已知的問題?

+0

控制檯中是否有腳本錯誤? – Ravimallya

回答

-3

變化:

<script src="//www.google.com/recaptcha/api.js"></script> 

到:

<script src="https://www.google.com/recaptcha/api.js" async defer></script> 

我不知道,如果這只是一個錯字,如果不是,添加https:肯定會解決你的問題。

+1

'加入https:肯定能解決你的問題'沒有什麼明確的; '//www.google.com/...'是一個協議相關的URL。如果@ Fane的文檔是通過「https」來源提供的,那麼它將是相同的。 –

-2

我剛剛在一個系統上有更嚴格的瀏覽器設置。
添加*.gstatic.com到信任列表解決它

我還添加了*.google.com*.google-analytics.com

希望幫助別人

3

確保<script src="//www.google.com/recaptcha/api.js"></script>是頭標記的結束前的最後一件事。 對我來說固定相同的問題

0

請確保您沒有在瀏覽器中激活任何內容攔截器,例如Ad-Block Plus或uBlock來源。

禁用這些,刷新頁面並再次提交表單。

1

只要按下這個障礙,並在我的情況下,它是由於AngularJS。它不僅限於Angular,在頁面加載後綁定元素的任何庫都可能導致Google reCAPTCHA無法顯示,因爲該元素在Google代碼執行時並不存在。

爲了解決這個問題,首先要渲染明確,並提供一個函數來執行時,驗證碼載荷:

<script src='https://www.google.com/recaptcha/api.js?onload=recaptchaOnload&render=explicit' async defer></script> 

現在,添加一個唯一的ID容器,例如

<div id="recaptcha" class="g-recaptcha" data-sitekey="site key here"></div> 

然後在自定義功能等元素,以實際存在:

var _captchaTries = 0; 
function recaptchaOnload() { 
    _captchaTries++; 
    if (_captchaTries > 9) 
     return; 
    if ($('.g-recaptcha').length > 0) { 
     grecaptcha.render("recaptcha", { 
      sitekey: 'site key here', 
      callback: function() { 
       console.log('recaptcha callback'); 
      } 
     }); 
     return; 
    } 
    window.setTimeout(recaptchaOnload, 1000); 
} 

這將繼續努力,持續10秒,直到它找到的元素,然後渲染的reCAPTCHA進去。