我已经实现了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 ,反之亦然,但仍然没有运气......
答案 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()函数。 我从来没有发现导致我的页面首先重新加载的原因