为什么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
在所有浏览器中,我得到相同的结果。那么这是否意味着我身边有错误?
答案 0 :(得分:0)
我认为这与浏览器和网络速度有关。您使用回调调用ReCaptcha,但在定义回调之前调用它。根据您的网络速度或浏览器怪癖,它可能会在加载脚本的其余部分之前执行。
第330行:
<script src="//www.google.com/recaptcha/api.js?onload=renderReCaptchaCallback&render=explicit&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
的定义移到页面顶部,以便在尝试加载之前定义它。