如何使用JavaScript上的后退按钮替换div标记的内容?
我的问题和这里的问题差不多。如何使用JavaScript上的后退按钮替换div标记的内容?,javascript,jquery,html,servlets,history.js,Javascript,Jquery,Html,Servlets,History.js,我的问题和这里的问题差不多。 我有一个标准的侧边栏主页,它执行ajax来替换div标记中的文本并显示上下文。除“后退”按钮外,所有操作都正常。后退按钮重定向到登录页面。 以下是我尝试过的:(我正在使用servlet) 如果没有任何javascript,用户将被发送到login.jsp on back按钮(会话不会失效)。 我在login.jsp中编写了代码,在用户已经登录时重定向到主页 access = Integer.parseInt(session.getAttribute("acces
我有一个标准的侧边栏主页,它执行ajax来替换div标记中的文本并显示上下文。除“后退”按钮外,所有操作都正常。后退按钮重定向到登录页面。
以下是我尝试过的:(我正在使用servlet)
如果没有任何javascript,用户将被发送到login.jsp on back按钮(会话不会失效)。 我在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.";
};
但是它在保存表单时也会显示警告,说“您的数据将不会被保存”,这不是一个很好的接受表单的方法,对吗?
最后,我尝试了history.pushState函数在调用ajax函数时替换历史
window.history.pushState({}, 'Previous','www.example.com/ajaxContent?url=homepage');
但这只会替换浏览器中的url,而不会加载页面。多次单击后,它会再次显示login.jsp。(显然)
我还发现这个页面的源代码可以禁用,但我更愿意使用后退按钮将div标记替换为先前的内容。pushstate只更改历史记录列表和url。它不会影响页面内容。您必须手动执行此操作,例如通过popstate事件。您的问题是什么?请只问一个问题。回答你的标题:因为pushstate不是设计来做这件事的。(您使用了错误的功能)