清除pushState在刷新时创建的html历史记录

时间:2014-04-09 20:42:19

标签: javascript arrays html5 html5-history

我在history.state和popstate中有数组的状态和索引数组我读了数组的内容,它工作正常但是当我回到第一页并刷新数组时(这是正常的)但前进的历史状态仍然存在。

是否可以删除使用pushState创建的虚假历史记录?

我无法在localStorage中存储我的状态,因为我的状态数组中有函数。

4 个答案:

答案 0 :(得分:9)

如果您阅读specification of History API for pushState,请在步骤4中说明

  
      
  1. 如果调用的方法是pushState()方法:
      删除当前条目后的浏览上下文会话历史记录中的所有条目。如果当前条目是会话历史记录中的最后一个条目,则不会删除任何条目。
  2.   

因此,根据您要做的事情,您可以为首次加载页面并推送状态(一个您将考虑第一个)创建一个特例,并明确这样做历史的前进状态。

答案 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;
&#13;
&#13;

答案 3 :(得分:-1)

window.history.replaceState('page', '');

此代码在页面加载时会阻止后退按钮