Google reCaptcha 2 TypeError:调用 grecaptcha.reset 后 a 为空

Posted

技术标签:

【中文标题】Google reCaptcha 2 TypeError:调用 grecaptcha.reset 后 a 为空【英文标题】:Google reCaptcha 2 TypeError: a is null after calling grecaptcha.reset 【发布时间】:2016-02-10 09:35:55 【问题描述】:

我有一个基于 AJAX 的注册页面,它在客户端和服务器上都进行验证。

当服务器端验证失败时,AJAX 将错误返回到屏幕并尝试使用 grecaptcha.reset() 重置 recaptcha。

重置recaptcha 似乎工作正常,客户能够重新勾选“我不是机器人”框并继续,但是在recaptcha 被重置并且页面上的滚动操作后会导致大量 TypeError : a is null javascript 错误在 recaptcha_en.js。

TypeError: a is null
https://www.gstatic.com/recaptcha/api2/r20151104115408/recaptcha__en.js
Line 50

代码(简化):

var recaptcha1;
var onRecaptchaLoad = function () 
    recaptcha1 = grecaptcha.render('gRecaptcha', 
        'sitekey': 'my site key',
        'callback': CaptchaResponse
    );
;

$.ajax(
type: "POST",
url: "SaveDetails",
contentType: "application/json; charset=utf-8", 
dataType: "json",
data: data,
cache: false,
success: function (result) 
    if (result != null) 
        if (result.d.Success) 
            //success
        else             
            grecaptcha.reset(recaptcha1);
        
     

);

【问题讨论】:

你有没有搞清楚这个问题? 当前版本的 reCaptcha 仍然会发生这种情况。 【参考方案1】:

有同样的问题,我发现有用的一切是 recapthca 正在尝试加载旧版本或其他东西(我无法重现,但在某些情况下我得到了另一个版本的验证码)......以及另一个与我的recaptcha 显示相同行为的模态窗口。

顺便说一句:不仅滚动事件触发错误垃圾邮件,而且任何窗口调整大小也是如此。

我希望这对您有所帮助。

【讨论】:

还在寻找这个问题的答案,你有什么发现吗? 当前版本的 reCaptcha 仍然会发生这种情况。 同样的问题,新的隐形 reCAPTCHA 仍然会发生。

以上是关于Google reCaptcha 2 TypeError:调用 grecaptcha.reset 后 a 为空的主要内容,如果未能解决你的问题,请参考以下文章

google recaptcha使用

Google reCaptcha v3 与 google reCaptcha Enterprise

css 将Google Recaptcha显示为#css #recaptcha #center

css 将Google Recaptcha显示为#css #recaptcha #center

新的 Google reCAPTCHA 一直无法通过 localhost 进行验证

如何将 Google Recaptcha v2 实施到限制访问 Google Recaptcha 的 Web 应用程序