Recaptcha v2不会每次都加载

时间:2015-08-11 07:21:35

标签: jquery asp.net asp.net-mvc recaptcha

我的页面上有两个表单,并且都使用reCaptcha v2保护它们。我明确地渲染它们,有时它们只是不会加载。 我使用ASP.NET MVC5。

<script src="//www.google.com/recaptcha/api.js?onload=CaptchaCallback&render=explicit"
 async defer></script>

这就是我的HTML代码的外观:

 <div id="captchaCredits"></div>
 <input type="text" id="captchaCredInput" name="captchaCredInput"
 style="display:none" disabled ="disabled">

(隐藏的输入只是我用来验证表单的技巧)。

这就是我渲染它的方式:

 var CaptchaCallback = function(){
    var mail = grecaptcha.render('captchaCredits', { 'sitekey': '...', 'theme': 'light'});
}

问题是:在我决定明确地渲染我的验证码后,它开始滞后:每次加载页面时它都不会加载。之前一切都很好,当我自动渲染它时,因为我当时只有一个表格来保护机器人。我怎样才能解决我的问题?

UPD :我试图删除其中一个验证码,但没有帮助。另外,我已将console.log(123)放在CaptchaCallback函数中,并发现此函数甚至可能无法在页面加载时执行。

2 个答案:

答案 0 :(得分:5)

问题是由不正确的脚本加载顺序引起的。我通过在<head>

中加载jQuery和其他库来解决它
<script type="text/javascript" src="lib/jquery-1.9.1.js"></script>
<script type="text/javascript" src="lib/jquery-ui-1.9.1.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="js/main.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script src="//www.google.com/recaptcha/api.js?onload=CaptchaCallback&render=explicit" async defer></script>

答案 1 :(得分:0)

当使用显式渲染(使用回调)时,定义函数非常重要,然后THEN调用API,API将其用于渲染。 虽然现代浏览器可以毫无问题地管理这些时间,但IE(在10和11上测试)需要遵循严格的命令