我实施路由器以在单页面应用程序中导航(类似于Angular' s ui-router
)。路由将通过更改浏览器位置的哈希来完成。
导航到未申报的路线应该是不可能的。因此,如果我仅宣布#/foo
路由,并且目前我正在#/foo
并尝试将哈希值更改为#/bar
,则浏览器应将哈希值恢复为#/foo
}。
但是,之后#/bar
将保留在浏览器的历史记录中。问题是:如何完全防止哈希导航中的历史变化?
我已经尝试了
$(window).on('hashchange', function(event) {
event.preventDefault();
return false;
})
但它没有用。
答案 0 :(得分:0)
这已经得到了解答。您可以使用onpopstate事件来检测用户何时向前/向后命中,但您需要包装pushState和replaceState方法以检测它们何时被使用。示例如下所示:How to detect when history.pushState and history.replaceState are used?