页面刷新后reCAPTCHA未显示

时间:2015-08-03 01:18:36

标签: browser-cache recaptcha

为什么google reCaptcha2 (gReCaptcha)在页面刷新后没有显示,但显示链接是否重新打开了页面?

有关说明,请参阅此视频:http://take.ms/I2a9Z
页面网址:https://orlov.io/signup

首页打开:验证码存在。
按链接导航:验证码存在。
打开新的浏览器标签:验证码存在。
刷新页面按刷新图标,ctrl + R,ctrl + F5 :验证码存在。

我添加了body unload事件以防止浏览器缓存,但它没有帮助。

用于测试的浏览器:
Firefix 39.0
Chome:44.0.2403.125 m
歌剧:30.0

在所有浏览器中,我得到相同的结果。那么这是否意味着我身边有错误?

1 个答案:

答案 0 :(得分:0)

我认为这与浏览器和网络速度有关。您使用回调调用ReCaptcha,但在定义回调之前调用它。根据您的网络速度或浏览器怪癖,它可能会在加载脚本的其余部分之前执行。

第330行:

<script src="//www.google.com/recaptcha/api.js?onload=renderReCaptchaCallback&amp;render=explicit&amp;hl=en-US" async defer></script>

第351行:

<script type="text/javascript">if (typeof (renderReCaptchaCallback) === "undefined") {
    var reCaptchaWidgets = {};
    var renderReCaptchaCallback = function() {
        jQuery.each(reCaptchaWidgets, function(widgetId, widgetOptions) {
            grecaptcha.render(document.getElementById(widgetId), widgetOptions);
        });
    };
}</script>

所以我会将renderReCaptchaCallback的定义移到页面顶部,以便在尝试加载之前定义它。