我已经实现了 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
}
);
到目前为止一切顺利...验证码在所有浏览器中都能很好地加载。在 IE8 和 9 中,当我单击小部件按钮进行重新加载和 mp3 版本时,整个页面都会重新加载
我尝试将 http 更改为 https,反之亦然,但仍然没有任何运气......
最佳答案
当调用 Recaptcha.create();
时,Google 的重新验证码 RELOAD 和 IMAGE/TEXT 按钮的代码如下所示:
<a href="javascript:Recaptcha.reload();">
我不知道为什么当按下按钮时,页面会在 IE 中的应用程序中重新加载,并且在 Google 提供的演示中 DEMO它发送一个异步请求...
由于我无法更改 href 属性中的 JavaScript,因此我必须在 jQuery $(document).ready();< 中添加 onclick 处理程序
我的解决方案是这样的:
$("#recaptcha).on("click", "id_of_the_reload_button", function(e){
e.preventDEfault();
Recaptcha.reload();
});
我基本上阻止了谷歌提供的 anchor 的自然行为,并自己调用了 reload() 函数。 我从来没有找出是什么导致我的页面重新加载
关于captcha - 重新验证码的小部件按钮重新加载整个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13971737/