2

我已经实现了 Google 的重新验证码并在 Chrome 中完美运行(AJAX API)。IE是问题...

我有:localhost://myapp/index.htmlForgot your password的链接。单击此链接时,将调用 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
                    }
            );

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

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

4

1 回答 1

2

Recaptcha.create();被调用时,谷歌的 re-captcha RELOAD 和 IMAGE/TEXT 按钮的代码看起来像这样:

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

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

由于我无法更改href属性中的 javascript,我不得不在 jQuery中添加一个onclick处理程序$(document).ready();

我的解决方案是这样的:

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

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

于 2012-12-21T23:56:13.757 回答