如何在从浏览缓存加载页面时执行javascript

how to execute javascript when page is loaded from browse cache?

本文关键字:执行 javascript 加载 缓存 浏览      更新时间:2023-09-26

在我的spring项目中,我使用下面的拦截器解决了后退按钮问题。

public class SampleInterceptor implements HandlerInterceptor
{
    public SampleInterceptor() {
    }
    @Override
    public void afterCompletion(HttpServletRequest arg0,
            HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {

    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response,
            Object object, ModelAndView model) throws Exception {

        if(request.getMethod().equals("GET"))
        {
            response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
            response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
            response.setDateHeader("Expires", 0);
        }
        else if(request.getMethod().equals("POST"))
        {
            System.out.println("After post request : ");
        }
    }
}

我已经清除了除帖子外的所有请求的浏览器缓存。现在用户注销并点击返回,它不会只进入应用程序进行get请求。但发布请求后,它会进入应用程序。我如何避免发布请求中的问题。如果我清除了用于发布请求的浏览器缓存,它会询问确认表单提交。如何解决此问题?任何帮助都将不胜感激!!

使用AJAX代替表单提交可以避免这种情况。使用AJAX POST提交您的请求。

此外,请参阅以下网址以了解更多详细信息:1.防止后退按钮显示POST确认警报

  1. http://en.wikipedia.org/wiki/Post/Redirect/Get

谢谢!!!

Post总是要求提交表单。

使用AJAX发布您的数据,然后在收到回复时重定向,或者提交构建get请求的数据。

请注意,当一个人返回更新或插入数据的页面时。数据会重新发布到服务器,并可能导致重复插入/更新。如果你打算的话,一定要处理这样的情况。