💡
HTML5
  • HTML5
  • 1. 簡介
    • 1.1 講者簡介
    • 1.2 課程簡介
    • 1.3 環境準備
  • 2. HTML5 元素
    • 2.1 語意結構標籤
    • 2.2 input 標籤的類型與屬性
    • 2.3 media 相關標籤
    • 2.4 圖形相關標籤
  • 3. History
    • 3.1 API 及相關說明
    • 3.2 練習
  • 4. Web Storage
    • 4.1 localStorage 與 sessionStorage 簡介
    • 4.2 資料儲存
    • 4.3 資料擷取
    • 4.4 資料更新
    • 4.5 資料刪除
    • 4.6 練習
  • 5. Fullscreen
    • 5.1 API 及相關說明
  • 6. File
    • 6.1 基本使用
    • 6.2 解析 CSV
  • 7. Drag and Drop
    • 7.1 簡介及主要事件說明
    • 7.2 練習 - 拖曳元素
    • 7.3 練習 - 其它事件
  • 8. Geolocation
    • 8.1 簡介
    • 8.2 相關 API 及範例
  • 9. Web Workers
    • 9.1 簡介
    • 9.2 Dedicated Worker
  • 10. 作業
  • 11. 參考資料
Powered by GitBook
On this page
  • 用途
  • 相關屬性
  • history.length
  • 相關方法
  • history.back()
  • history.forward()
  • history.go()
  • history.pushState(stateObject, title, url)
  • history.replaceState(stateObject, title, url)
  • popstate 事件
  1. 3. History

3.1 API 及相關說明

Previous3. HistoryNext3.2 練習

Last updated 1 year ago

用途

透過 window 裡的 history 物件,操控瀏覽器當下分頁的「瀏覽歷程」。

相關屬性

history.length

回傳目前的 session 當中,瀏覽歷程有幾個。例:

點擊 ,可隨意瀏覽,然後 cmd + option + i,叫出開發者工具,在 console 中,輸入以下程式:

history.length;

結果可能如下圖,就看目前的瀏覽歷程有幾個:

相關方法

history.back()

回到瀏覽歷程中的前一頁,相當於使用者按瀏覽器的上一頁按鈕。相當於 history.go(-1)。

history.forward()

回到瀏覽歷程中的下一頁,相當於使用者按瀏覽器的下一頁按鈕。相當於 history.go(1)。

history.go()

相對於當前頁面的所在位置,例如 -1 為前一頁,1 為下一頁。 例如 history.go(2) 就是跳到「下一頁」再「下一頁」。

若指定了一個超出範圍的值,此方法就不會有任何效果發生。

history.pushState(stateObject, title, url)

將 url 加進瀏覽歷程。stateObject 及 title 可忽略,有的瀏覽器不支援。

假設目前的瀏覽歷程為(使用者的網址是停留在 c.html ):

如果輸入以下程式:

history.pushState(null, null, "d.html");

那麼瀏覽歷為會變成:

頁面並不會重新整理,內容一樣會是 c.html 網頁的內容,只是網址被改掉,而瀏覽歷程會新增一個是 d.html。

如果這時按下「上一頁」按鈕,會是進到 c.html 的網頁內容。 再按「下一頁」,會是進到 d.html ,但內容會是 c.html 的內容,如果頁面重新整理,會是 d.html 的內容。

history.replaceState(stateObject, title, url)

將目前的瀏覽歷程,修改為 url。stateObject 及 title 可忽略,有的瀏覽器不支援。

假設目前的瀏覽歷程為(使用者的網址是 c.html ):

如果輸入以下程式:

history.replaceState(null, null, "d.html");

那麼瀏覽歷為會變成:

頁面並不會重新整理,內容一樣會是 c.html 網頁的內容,只是網址被改掉變成 d.html,而原來的瀏覽歷程會變成是一個 d.html。

如果這時按下「上一頁」按鈕,會進到 b.html 的網頁內容。 再按「下一頁」,會進到 d.html 的網頁內容。

popstate 事件

瀏覽歷程當中,是由 history.pushState() 或 history.replaceState() 所建立或影響的歷史記錄,那麼使用者在操控上一頁、下一頁時,就會觸發 popstate 事件,須綁定在 window 上。語法如下:

window.addEventListener("popstate", function(e){
  
});

yahoo 官網連結
瀏覽歷程
pushState 後的瀏覽歷程
瀏覽歷程
replaceState 後的瀏覽歷程