我在我的网页中使用History.js。它运行正常,但是当用户点击页面上的痕迹导致直接进入第一页,即没有点击浏览器后退按钮,则没有使用History.js堆栈清除并且第一页上没有按下后退按钮无法正常工作。
有没有办法可以清除History.js堆栈。
在Html5历史API中我会做history.go(-(history.length - 1));
但是当使用History.js时History.length
总是给我0,即使我按照痕迹并跳过了一些后退按钮点击。
答案 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");
答案 1 :(得分:2)
此解决方案适用于我的情况:
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 );