页面刷新后reCAPTCHA没有显示



为什么谷歌reCaptcha2 (gReCaptcha)不显示页面刷新后,
但显示如果页面被链接重新打开?

请看这个视频:http://take.ms/I2a9Z
网页网址:https://orlov.io/signup

Page first open: captcha exists。
通过链接导航: captcha存在。
打开新的浏览器选项卡: captcha存在。
通过刷新图标刷新页面,ctrl+R, ctrl+F5: captcha NOT存在。

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

测试浏览器:
Firefix 39.0
home: 44.0.2403.125 m
歌剧:30.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的定义移动到页面顶部,以便在尝试加载它之前对其进行定义。

最新更新