是否有可能取消导致哈希更改或HTML 5历史更改的浏览器后退或前进事件,就像可以通过window.onbeforeunload取消页面加载的后退或前进事件一样?
是否有可能取消导致哈希更改或HTML 5历史更改的浏览器后退或前进事件,就像可以通过window.onbeforeunload取消页面加载的后退或前进事件一样?
我不知道这是否有助于您的情况,但是Sammy.js是一个流行的哈希路由库,它具有before处理程序。我在我的应用程序中使用它来记录先前访问的哈希,如果它是我想要阻止他们离开的哈希,则返回false将使他们停留在该页面。您仍然需要重写URL以显示上一页,但似乎它正在工作。这是我所做的一小部分示例:
app.before(function (context) {
if (context.path === lastRoute) return false; // Was fired from our app.setLocation below.
if (lastRoute === "/#MyHashWhereIFirstWantToConfirm") {
if (!confirm("Are you sure you wish to leave this page?")) {
app.setLocation(lastRoute); // Send them back to /#MyHashWhereIFirstWantToConfirm
return false; // Keep the handler for the destination page from firing.
}
}
lastRoute = context.path;
return true;
});
结合 window.onbeforeunload
,你可以在没有确认的情况下,基本上防止用户离开页面。
false
怎么样? - qwertymk