Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript上的后退按钮替换div标记的内容?_Javascript_Jquery_Html_Servlets_History.js - Fatal编程技术网

如何使用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不是设计来做这件事的。(您使用了错误的功能)