1)我試圖找到一種方法來顯示一個確認彈出窗口,通過瀏覽器後退按鈕離開頁面。卸載事件在這種情況下似乎不會觸發。我正在使用angular2。我曾嘗試訂閱所有導航事件:有沒有辦法阻止用瀏覽器後退按鈕離開網頁?
this.router.events.pairwise().subscribe((e) => {
if (e[0] instanceof NavigationEnd && e[1] instanceof NavigationStart) {
console.log(e[0].id + " " + e[0].url + ", " + e[1].id + " " + e[1].url);
if (!this.whateverService.canNavigateAway) {
//var b = confirm("You have unsaved changes. Navigate away?");
}
}
});
但我似乎無法取消導航。
2)如果無法使用後退按鈕取消導航,則會出現其他問題。我如何區分前進和後退,還是返回3頁?那麼知道瀏覽本地瀏覽器歷史記錄的頁面的位置是很好的。我想知道,例如歷史記錄總共有7頁,我們從索引5的頁面導航到索引4的頁面。這樣我就可以導航回到我想要的位置而不會弄亂歷史。
你可以看看歷史api。 https://developer.mozilla.org/en-US/docs/Web/API/History_API您可以使用pushState來放置一個僞造的URL條目。你也可以用僞造的#anchor標籤來做到這一點,在頁面加載時可能會觸發虛假的點擊。 – Keith
你可以查看歷史API,當然,但請注意,歷史API不會做什麼*你要;它希望*你*做它想要的東西。這很奇怪和具有挑戰性。 – Pointy