在WebApp或瀏覽器中,會有點擊返回、后退、上一頁等按鈕實現自己的關閉頁面、調整到指定頁面、確認離開頁面或執行一些其它操作的需求。可以使用 popstate 事件進行監聽返回、后退、上一頁操作。
一、簡單介紹 history 中的操作
1.window.history.back(),后退
2.window.history.forward(),前進
3.window.history.go(num),前進或后退指定數量歷史記錄
4.window.history.pushState(state, title, utl),在頁面中創建一個 history 實體。直接添加到歷史記錄中。
參數: state:存儲一個對象,可以添加相關信息,可以使用 history.state 讀取其中的內容。
title:歷史記錄的標題。
url:創建的歷史記錄的鏈接。進行歷史記錄操作時會跳轉到該鏈接。
5.window.history.replaceState(),修改當前的 history 實體。
6.popstate 事件,history 實體改變時觸發的事件。
7.window.history.state,會獲得 history 實體中的 state 對象。
二、使用方法
取消默認的返回操作:
1.添加一條 history 實體作為替代原來的 history 實體
function pushHistory(){
var state = {
title: "title",
url: "#"
}
window.history.pushState(state, "title", "#");
}
pushHistory()
2.監聽 popstate 事件
window.addEventListener("popstate", function(){
location.reload();
}, false)
當網頁加載時,各瀏覽器對popstate
事件是否觸發有不同的表現,Chrome 和 Safari會觸發popstate
事件, 導致頁面反復刷新,而Firefox不會.