利用HTML5的history.replacestate()修改當前頁面的URL
history物件
history物件儲存著使用者上網的歷史記錄,從視窗被開啟的那一刻算起。由於安全方面的考慮,開發人員無法得到使用者瀏覽器的URL,但藉由使用者訪問過的頁面列表,可以在不知道實際URL的情況下實現後退和前進。
跳轉方法
go()
使用go()方法可以在使用者的歷史記錄中任意跳轉。這個方法接收一個引數,表示向後或向前跳轉的頁面數的一個整數值。負數表示向後跳轉(類似於後退按鈕),正數表示向前跳轉(類似於前進按鈕)
go()方法無引數時,相當於history.go(0),可以重新整理當前頁面
back()
back()方法用於模仿瀏覽器的後退按鈕,相當於history.go(-1)
forward()
forward()方法用於模仿瀏覽器的前進按鈕,相當於history.go(1)
如果移動的位置超出了訪問歷史的邊界,以上三個方法並不報錯,而是靜默失敗
[注意]使用歷史記錄時,頁面通常從瀏覽器快取之中載入,而不是重新要求伺服器傳送新的網頁
增改記錄:
history.pushState() , history.replaceState()
HTML5為history物件新增了兩個新方法,history.pushState()和history.replaceState(),用來在瀏覽歷史中新增和修改記錄。state屬性用來儲存記錄物件,而popstate事件用來監聽history物件的變化
pushState()
history.pushState()方法向瀏覽器歷史新增了一個狀態(增加一個記錄)。pushState()方法帶有三個引數:一個狀態物件、一個標題(現在被忽略了)以及一個可選的URL地址
history.pushState(state, title, url);
state object —— 狀態物件是一個由pushState()方法建立的、與歷史紀錄相關的javascript物件。當使用者定向到一個新的狀態時,會觸發popstate事件。事件的state屬性包含了歷史紀錄的state物件。如果不需要這個物件,此處可以填null
title —— 新頁面的標題,但是所有瀏覽器目前都忽略這個值,因此這裡可以填null
URL —— 這個引數提供了新歷史紀錄的地址。新URL必須和當前URL在同一個域,否則,pushState()將丟出異常。這個引數可選,如果它沒有被特別標註,會被設定為文件的當前URL
replaceState(引數見上所述)
把當前的頁面的歷史記錄替換掉
他們最大的特點是新增或替換歷史記錄後,瀏覽器位址列會變成你傳的地址,而頁面並不會重新載入或跳轉。
例如,假設當前的頁面地址是example.com/1.html,且history中此時只有一條當前頁面的記錄。
當你執行 history.pushState(null, null, “2.html”)後,瀏覽器的位址列會顯示example.com/2.html,但並不會跳轉到2.html,甚至並不會去檢查2.html存不存在,只是加入一個最新的歷史記錄項。此時history中會有兩個記錄。假如你此時點選頁面上的link跳轉到另外一個頁面後,點選瀏覽器的後退按鈕,則url會變成example.com/2.html,如果此前的1.html的頁面瀏覽器有快取的話會顯示1.html的內容,否則會發起請求example.com/2.html。如果再次點後退,url會變成example.com/1.html。
而如果執行 history.replaceState(null, null, “2.html”)的話,瀏覽器的位址列也會顯示example.com/2.html,區別是history中只有當前2.html的記錄,而1.html的記錄已被替換掉。
利用這些特性,可以用來修改當前頁面的URL來達成某些目的,比如可以用來記住搜尋條件。
參考原文連結
相關文章
- react獲取當前頁面的url引數React
- PHP中獲取當前頁面的各種URL格式PHP
- PbootCMS模板如何輸出當前頁面的完整URL地址boot
- 獲取當前頁面的topViewControllerViewController
- 關於利用jQuery實現愛奇藝裡面的滑鼠移入改變當前頁面的功能的實現原理jQuery
- JS指令碼中重新整理當前頁面的方法JS指令碼
- vue專案重新整理當前頁面的三種方法Vue
- 帝國CMS利用PHP判斷當前頁面是否為首頁PHP
- H5 記錄當前頁面的選中狀態,sessionStorageH5Session
- SAP Spartacus 如何獲得當前渲染頁面的 CMS 後設資料
- 帝國CMS當前位置newsnav“首頁”兩個字修改方法
- JS 點選複製當前URL地址JS
- vue重新整理當前頁面或者當前元件Vue元件
- jquery/js透過當前URL對當前欄目連結高亮顯示jQueryJS
- 獲取當前修改的行記錄資料
- github_修改當前倉庫的預設分支Github
- 小謝第36問:elemet - table表格修改後表格行高亮顯示且定位到當前行當前頁
- [AHK]讀取演示PPT當前頁的備註
- git 解決衝突 —— git stash 當前修改Git
- 微信內關閉當前頁面
- unity 動態修改當前橫豎屏狀態Unity
- Flutter 從當前頁面進入一個新的頁面並返回Flutter
- 如何使用jquery重新整理當前頁面jQuery
- 頁面的修改、新增,以及驗證控制元件的常見應用控制元件
- 網站url修改,如何修改網站URL並保持SEO效果網站
- vue點選當前路由,如何實現重新整理當前頁Vue路由
- 從瀏覽器位址列輸入url到顯示頁面的步驟瀏覽器
- SAP Spartacus 產品明細頁面的 url 設計和資料來源
- Vue重新整理當前頁面幾種方式Vue
- 寶塔皮膚“抱歉,站點已暫停”提示頁面的修改
- 利用ServiceWorker實現頁面的快速載入和離線訪問
- Vue利用History記錄上一頁面的資料方法例項Vue
- 使用 xpath 爬取當前頁面所有城市名稱
- PbootCMS模板自動生成當前頁面二維碼boot
- PbootCMS模板欄目頁如何呼叫當前欄目的文章boot
- Android ViewPager Fragments滑動只重新整理當前頁AndroidViewpagerFragment
- 一段簡單的顯示當前頁面FPS的程式碼
- 如何在SAP Spartacus category 頁面裡拿到當前的category資訊Go