为什么谷歌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&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
的定义移动到页面顶部,以便在尝试加载它之前对其进行定义。