在popstate事件中清除前向历史记录

9
我正在开发一个应用程序,它使用视图通过history.pushState()函数添加到历史记录中。这些视图是表单中的不同步骤,用户可以回退到之前的步骤进行调整,但不能在没有重新提交的情况下向前移动。
我通过监听popstate事件并在调用的函数中后退一步来实现后退导航。问题在于,由于调用popstate,浏览器中的历史记录前进按钮变得可点击了。但由于历史记录前进按钮也会触发popstate事件,所以单击历史记录前进按钮将导致您再次向后导航一步。
因为我不希望用户能够前进浏览历史记录,所以我想清除前进历史记录。我的问题基本上就是,在通过浏览器历史记录后退时是否有一种方法可以删除前进历史记录?
1个回答

2

检查用户是否从下一步(第2步)返回,例如您可以使用cookies或localStorage来实现。如果是,则使用当前位置(第1步)进行pushState。不幸的是,这会为后退按钮添加另一个位置,但它也会禁用历史记录前进按钮。第2步将不会在历史记录后退列表中显示。这并不完美,但也许已经足够好了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接