在浏览器后退按钮上重新加载recaptcha

我在寻呼时尝试了很多方法来重新加载图像,但无论我尝试什么,我都得到相同的图像。 有些方法很接近(我可以看到图像刷新,但是recaptcha服务器响应并重新出现前一个图像)。 单击后退按钮时是否有一些技巧可以重新加载图像? 如果用户输入的安全字不正确,我不希望我的用户必须重新输入所有表单信息。 我也想避免存储所有信息。 该页面是经典的asp,因此jquery或ajax方法将成为路径,或者id假设。 提前致谢。

我想出了一个解决这个问题的快速黑客攻击。 在带有recaptcha的页面上添加以下jquery

 

只需将“#form_div”替换为您表单中的任何div。 现在,当用户点击后退按钮时,它会刷新recaptcha图像。 从各方面来讲,这都是一个黑客,但它对我有用。

window.onload调用您的刷新方法:

 window.onload = function(){ /* refresh here */ } 

编辑:删除历史API答案以显示可能的AJAX答案。

使用jQuery它非常容易。

 $(window).on('load',function(){ $('#RecaptchaContainer').load('/path/to/recaptcha.php',function(){ // any javascript you need to perform on the recaptcha }); }); 

您可以在该文件中包含所有recaptcha HTML,但是您可以包含该回调函数中的所有javascript。

这是适用于Chrome的简单方法:

在HTML主体上添加重载function如下:

  

当用户单击后退按钮时, reCaptcha图像会在Chrome中自动重新加载。

我设法通过使用以下代码行来正确刷新它:

 body onLoad="javascript:Recaptcha.reload()" 

但是这种方法不是一个好的解决方案,因为焦点设置在recaptacha文本字段上,这意味着窗口向下滚动到页面的底部,这是recaptacha字段的位置,即使您第一次进入页面(不是只有当按“BACK”到页面时)。 这个解决方案有效,但最好找到一个不将重点放在recaptacha输入字段上的解决方案。