我的问题与此处的问题question几乎相似。
我有一个标准的侧边栏主页,该主页执行ajax来替换div标签中的文本并显示上下文。除了“后退”按钮之外,其他所有功能均正常。后退按钮重定向到登录页面。
这些是我尝试过的事情:(我正在使用servlet)
如果没有任何JavaScript,则将用户返回到后退按钮上的login.jsp,(会话不会无效)。
我已经在login.jsp中编写了代码,以在用户已经登录时重定向到主页。
access = Integer.parseInt(session.getattribute("access").toString());
if (access == 1) {
RequestDispatcher rd = request.getRequestDispatcher("ajaxContent?url=homepage");
rd.forward(request,response);
//ajaxContent is the servlet loads the sidebar. With the content of homepage in div tag.
}
但是后退按钮仅显示前一页,因此从未执行过用于检查会话的Java代码。
我试图添加onbeforeunload函数来提醒用户后退按钮。
window.onbeforeunload = function () {
return "Your work will be lost.";
};
但是在保存表单时也会显示警告,提示“您的数据将不会被保存”,这不是接受表单的好方法,对吗?
最后,当ajax函数被调用时,我尝试使用history.pushState函数替换历史记录。
window.history.pushState({},'Previous','www.example.com/ajaxContent?url=homepage');
但这只是替换浏览器中的url,但不会加载页面。多次单击时,它将再次显示login.jsp。 (显然)
我还发现此页面具有禁止back button entirely的源代码,但我希望将后退按钮替换为div标签,并替换其中的先前内容。