Javascript / jQuery:history.go(-1)的任何事件?

时间:2013-04-17 09:54:05

标签: javascript jquery forms events post

在我的服务器端验证表单时,我正在使用history.go(-1);重定向以防验证错误。这样表单数据仍然存在,用户可以修复数据并重新提交表单。

直到我使用验证码才能正常工作。如果用户提交了错误的验证码,则服务器验证会使用history.go(-1);将其重定向回来。这样,页面实际上没有重新加载,并且验证码图像不会刷新。因此用户不断提交错误的验证码。

因此,每当通过history.go(-1);重定向页面时,我都可以触发事件或函数。这样我就可以调用一个可以重新加载验证码图像的函数。

我必须这样做,因为我的表单处理是在一个单独的服务器上完成的。

感谢。

4 个答案:

答案 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
         */
    }
};