Google Recaptcha在重置时抛出错误

时间:2014-11-30 20:18:23

标签: javascript jquery captcha recaptcha

我正在努力让Google Recaptcha在我的某个网站上工作,但我遇到了一些问题。我遵循文档here并使用显式渲染函数来创建recaptcha小部件。

包含验证码的表单可以在不重新加载页面的情况下重复使用。换句话说,当有人第一次成功提交表单时,它会折叠并显示一个按钮,允许用户再次使用该表单。

单击此按钮时,我调用JS中的重置功能,使验证码再次工作。可以找到此功能的详细信息here。调用重置功能时,控制台中会出现此错误;

错误:访问属性的权限被拒绝' 10_1417377045946'

之后当有人试图使用验证码时会弹出以下错误:

http:// google.com上的页面说:联系recaptcha服务时出错。

有人可以帮我找到解决这个问题的方法吗?感谢

3 个答案:

答案 0 :(得分:1)

如果您需要重置/重新加载Google reCAPTCHA,请使用grecaptcha.reset();

(这不会引发任何错误。)

答案 1 :(得分:-1)

在我自己的网站上实现这个时,我遇到了同样的错误。 这是我使用的解决方法:

我在持有重新验证码的div中添加了一个id,如下所示:

<div id="recaptcha" class="g-recaptcha" data-sitekey="my_key"></div>

当我需要重新加载重新验证码时,我会使用这段javascript:

        var recaptchaframe = $('#recaptcha iframe');
        var recaptchaSoure = recaptchaframe[0].src;
        recaptchaframe[0].src = '';
        setInterval(function () { recaptchaframe[0].src = recaptchaSoure; }, 500);

首先我尝试将src直接设置为自身,但是没有刷新iframe。然后我尝试将其设置为空并直接返回源而不使用间隔,但这也没有刷新帧。

最后结合间隔,它很好地刷新,我没有得到我用reset命令得到的Access Denied错误。

答案 2 :(得分:-1)

THX Huron!

是一个笑话,谷歌做了一个错误的事情,你可以在reset()方法中使用build。

此外,他们不会写任何说明小部件只能处理一个请求的行,所以AJAX用户抬头,使用reset()!

但是不要使用reset()!使用@huron的代码。

顺便说一句@huron的代码只适用于一个小部件,这里有多个:

var $recaptcha = $('.g-recaptcha iframe');
if ($recaptcha.length) {
    $recaptcha.each(function () {
        var $this = $(this),
            recaptchaSoure = $this[0].src;

        $this[0].src = '';
        setInterval(function () { $this[0].src = recaptchaSoure; }, 500);
    });
}