清除History.js的历史堆栈

时间:2013-11-01 17:56:33

标签: javascript history.js

我在我的网页中使用History.js。它运行正常,但是当用户点击页面上的痕迹导致直接进入第一页,即没有点击浏览器后退按钮,则没有使用History.js堆栈清除并且第一页上没有按下后退按钮无法正常工作。 有没有办法可以清除History.js堆栈。 在Html5历史API中我会做history.go(-(history.length - 1));但是当使用History.js时History.length总是给我0,即使我按照痕迹并跳过了一些后退按钮点击。

4 个答案:

答案 0 :(得分:7)

  

无法清除会话历史记录或禁用   从非特权代码返回/前进导航。最接近的   解决方案是 location.replace()方法,它取代了当前的方法   具有提供的URL的会话历史记录的项目。 Mozilla Source

有这样的解决方案:

var Backlen=history.length;   

history.go(-Backlen); // Return at the beginning

window.location.replace("page url to redirect");

Source

答案 1 :(得分:2)

多诺万的答案很棒,但在我的案例中不起作用。后缀索引太高,因此命令history.go(-Backlen)将被忽略。

此解决方案适用于我的情况:

var backlen = history.length - 1;  
history.go(-backlen); // Return at the beginning
history.replaceState({}, null, 'your relative url');

答案 2 :(得分:0)

我不知道直接答案,但您可以尝试window.location.replace(url);

引用另一篇文章: 使用replace()后,当前页面将不会保存在会话历史记录中,这意味着用户将无法使用“后退”按钮导航到该页面 In Javascript, how do I "clear" the back (history -1)?

答案 3 :(得分:0)

这是History.js的等价物。

var urlPath = "index.html";
var response = { "html": htmlpage.toString() };
var currentIndex = History.getCurrentIndex();   
// Return at the beginning
if( currentIndex > 0 )
    History.go( -currentIndex ); 
//pushState will clear forward history
History.pushState(  response  , null, urlPath );