window.history是JavaScript中的一個對象,表示瀏覽器的歷史記錄。它提供了一些方法和屬性,允許開發人員在瀏覽器歷史記錄中進行導航和操作。
window.history對象的屬性包括:
length:返回瀏覽器歷史記錄中的頁面數量。
state:返回當前頁面的狀態對象,該對象是通過pushState()或replaceState()方法設置的。
window.history對象的方法包括:
back():加載歷史記錄中的上一個頁面。
forward():加載歷史記錄中的下一個頁面。
go():加載歷史記錄中的指定頁面,可以傳入一個整數作為參數,表示相對于當前頁面的偏移量。
除了這些方法和屬性,window.history對象還有兩個重要的方法:
pushState():將新的狀態添加到瀏覽器歷史記錄中,同時改變當前URL但不加載新頁面。該方法接受三個參數:state(狀態對象),title(標題,現在大多數瀏覽器都忽略這個參數),url(新的URL)。注意,pushState()只會改變瀏覽器的歷史記錄,不會觸發頁面的刷新或加載。
replaceState():替換當前的狀態對象,不會添加新的歷史記錄。該方法接受三個參數:state(狀態對象),title(標題),url(新的URL)。
這些方法和屬性允許開發人員在不刷新頁面的情況下,改變瀏覽器的歷史記錄,從而實現前端路由和SPA(單頁應用)的效果。
需要注意的是,由于安全原因,對于瀏覽器歷史記錄的修改受到限制。在大多數瀏覽器中,只有在同源策略下才能夠進行修改。也就是說,只有當新的URL與當前頁面的域名、協議和端口號完全一致時,才能夠使用pushState()和replaceState()方法。如果違反了這個限制,瀏覽器將會拋出SecurityError異常。