我在history.state和popstate中有数组的状态和索引数组我读了数组的内容,它工作正常但是当我回到第一页并刷新数组时(这是正常的)但前进的历史状态仍然存在。
是否可以删除使用pushState创建的虚假历史记录?
我无法在localStorage中存储我的状态,因为我的状态数组中有函数。
答案 0 :(得分:9)
如果您阅读specification of History API for pushState,请在步骤4中说明
- 如果调用的方法是
醇>pushState()
方法:
删除当前条目后的浏览上下文会话历史记录中的所有条目。如果当前条目是会话历史记录中的最后一个条目,则不会删除任何条目。
因此,根据您要做的事情,您可以为首次加载页面并推送状态(一个您将考虑第一个)创建一个特例,并明确这样做历史的前进状态。
答案 1 :(得分:2)
无法清除会话历史记录或禁用会话历史记录 从非特权代码返回/前进导航。最接近的 解决方案是location.replace()方法,它取代了当前的方法 具有提供的URL的会话历史记录的项目。 Mozilla
唯一的方法就是这样(但我想你知道)
var length=history.length;
history.go(-length);
window.location.replace("urlToRedirect");
使用replace()后,当前页面将不会保存在会话历史记录中,这意味着用户将无法使用“后退”按钮导航到该页面。
答案 2 :(得分:2)
我的想法 - 覆盖整个历史:
for (i = 0; i < 50; i++) {
history.pushState({}, '');
}
&#13;
答案 3 :(得分:-1)
window.history.replaceState('page', '');
此代码在页面加载时会阻止后退按钮