Re-captcha的小部件按钮重新加载整个页面

时间:2012-12-20 11:59:54

标签: captcha recaptcha

我已经实现了Google的重新验证码,并且完美地在Chrome中工作(AJAX API)。 IE就是问题......

我有: localhost://myapp/index.html 以及忘记密码的链接。单击此链接时,将调用jQuery单击处理程序。处理程序功能更改div的内容并且还要求 Recaptcha.create(...)小部件正确显示并在Chrome中按预期工作,但在IE中如果我点击重新加载图标或声音按钮它会重新加载整个页面。

如果我手动调用Recaptcha.reload(),它会重新加载而没有任何问题?!

HTML我有:

<div id="recaptcha" style="width:120px"></div>

[...]

<script type="text/javascript" src="https://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>

[...]

//In a jquery click handler I call
Recaptcha.create("6LxxxxxxxxxxxxxxxxxxxxxxIrpV5RO8P",
                    "recaptcha",
                    {
                        theme:'white',
                        callback: Recaptcha.focus_response_field
                    }
            );

到目前为止一直很好...... Captcha在所有浏览器中都能很好地加载。在IE8和9中,当我单击小部件按钮进行重新加载和mp3版本时,整个页面被重新加载

我尝试将 http 更改为 https ,反之亦然,但仍然没有运气......

1 个答案:

答案 0 :(得分:2)

调用Recaptcha.create();时,Google的重新验证码RELOAD和IMAGE / TEXT按钮的代码如下所示:

 <a href="javascript:Recaptcha.reload();">

我不知道为什么当按下按钮时我的应用程序在IE中重新加载页面,并且在Google提供的演示DEMO中它发送异步请求...

由于我无法更改 href 属性中的javascript,因此我必须在jQuery中添加 onclick 处理程序$(document).ready();

我的解决方案是:

$("#recaptcha).on("click", "id_of_the_reload_button", function(e){
    e.preventDEfault();
    Recaptcha.reload();
});

我基本上阻止了google提供的锚点的自然行为,并且自己调用了reload()函数。 我从来没有发现导致我的页面首先重新加载的原因