3

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

4

4 回答 4

8

无法清除会话历史记录或禁用非特权代码的后退/前进导航。最接近的可用解决方案是location.replace()方法,它将会话历史记录的当前项替换为提供的 URL。Mozilla 源

有这样的解决方案:

var Backlen=history.length;   

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

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

来源

于 2013-11-05T09:10:01.790 回答
2

多诺万的回答很好,但对我来说不起作用。backlength 索引太高,因此命令 history.go(-Backlen) 将被忽略。

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

var backlen = history.length - 1;  
history.go(-backlen); // Return at the beginning
history.replaceState({}, null, 'your relative url');
于 2014-11-11T12:30:23.600 回答
0

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

引用另一篇文章:使用 replace() 后,当前页面将不会保存在会话历史记录中,这意味着用户将无法使用后退按钮导航到它 在 Javascript 中,我如何“清除”后退(历史-1)?

于 2013-11-05T09:03:26.947 回答
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 );
于 2014-10-12T18:50:11.077 回答