我正在使用HTML5 History API编写一个单页JavaScript应用程序。该应用程序通过Ajax加载内容,并在前台屏幕上使用屏幕堆栈来内部维护状态信息。
我想启用“后退”按钮进行导航,但我永远不想启用“前进”按钮。
以下是一些快速的信息:
- 用户只能后退,不能前进
- 按下浏览器的返回按钮会关闭用户所在页面屏幕并重新加载上一个页面
- 项目仅面向最新版本的Chrome,因此其他浏览器实现不重要
- 我仅使用本机JavaScript和jQuery,并且不想使用History.js来完成这个问题
当我加载新屏幕时,我运行以下代码:
history.pushState(screenData, window.document.title, "#");
我通过 jQuery 绑定到 popstate 事件:
$(window).bind("popstate", function(event) {
if (event.originalEvent.state != null) {
// Logic that loads the previous screen using my screen stack
}
});
我的应用程序历史管理正常工作,但当我返回时,向前按钮仍然可用。我需要找出如何在popstate
事件上从history
中删除数据。我能用replaceState做到这点吗?我不确定如何去做...
typeof event.state == "object"
更改为typeof event.state === "object" && event.state !== null
以使其正常工作。 - Junior