发现了一个问题,当用户在 IE 中点击刷新时,Google recaptcha(不可见或 v2)将无限期地坐着并旋转。从监控流量来看,当有人点击复选框时,它似乎永远不会向谷歌发出 API 调用以进行重新验证。
使用 recaptchaV2 重现的步骤:
- 在初始加载时,单击 recaptcha 复选框
- 预期:绿色复选标记
- 实际:绿色复选标记
- 单击刷新或 f5
- 单击重新验证复选框
- 预期:绿色复选标记
- 实际:旋转
笔记:
- 如果开发工具已打开,则在第 3 步中实际是预期的绿色复选标记
- 如果在步骤 2 中使用 ctrl + f5,则在步骤 3 中实际是预期的绿色复选标记
- 没有控制台错误发生
- 尝试打电话
grecaptcha.reset()
没有运气
下面是我用来隔离问题的代码。我使用 npm install http-server –g 和 http-server 来提供文件。
<!doctype html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=yes">
<script src="https://www.google.com/recaptcha/api.js?onload=onload&render=explicit" async defer></script>
</head>
<body>
<div id="gr123"></div>
<script>
window.hasLoaded = false;
window.onload = function() {
var elem = document.getElementById("gr123");
if(!window.hasLoaded) {
window.hasLoaded = true;
grecaptcha.render(elem, {
"sitekey": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI",
"size": 'normal'
});
grecaptcha.reset();
}
}
</script>
</body>
</html>