在我的服务器端验证表单时,我正在使用history.go(-1);
重定向以防验证错误。这样表单数据仍然存在,用户可以修复数据并重新提交表单。
直到我使用验证码才能正常工作。如果用户提交了错误的验证码,则服务器验证会使用history.go(-1);
将其重定向回来。这样,页面实际上没有重新加载,并且验证码图像不会刷新。因此用户不断提交错误的验证码。
因此,每当通过history.go(-1);
重定向页面时,我都可以触发事件或函数。这样我就可以调用一个可以重新加载验证码图像的函数。
我必须这样做,因为我的表单处理是在一个单独的服务器上完成的。
感谢。
答案 0 :(得分:1)
此处的解决方案是使验证码图像无法缓存。您需要指示您的验证码脚本发送带有图像的响应标头,或者过去的“过期”日期或者没有缓存日期。这样,浏览器将在每个history.go(-1)上重新加载验证码。
答案 1 :(得分:1)
window.onpopstate
就是您所需要的。
答案 2 :(得分:0)
我认为你需要一个历史适配器:
History.Adapter.bind (window, 'statechange', function () {});
这将在每次历史状态更改时触发该功能。
答案 3 :(得分:0)
var url = location.href;
window.onpopstate = function(event) {
if(url != location.href) {
/*Your Function here
* I'm using this to load the contentBox when user goes back or forward in
* browserhistory -- perfect for sites with ajax
* works on all browser but u need Jquery. (Safari can't use window.location.href)
* for functions to add dynamic params or removing them just ask ;)
* define the url var to prevent function to fire on reload
*/
}
};