H5新增了新的介面history.pushState、history.replaceState讓我們可以向history歷史記錄中新增、替換記錄,從而實現了不重新整理跳轉頁面。 在實際應用中通常會遇到這樣的需求,需要從一個目標頁跳到另一個頁面就行一些操作,操作完成再跳到目標頁,如果這時候我們還使用pushState跳轉到目標頁,就會向history中再新增一條目標頁的記錄
此時如果使用者在目標頁1中點選返回上一頁按鈕就會又重新回到操作頁,但實際想要返回到的是起始頁,這時需要連續返回3次才能到回到起始頁。如果我們在操作頁跳轉目標頁的時候使用返回上一頁history.go(-1),這時只需要點選1次返回鍵就可以回到起始頁,這樣對於使用者體驗來說更合理一些。 如果操作頁數是2頁、3頁甚至更多,只要操作頁的頁數是固定的也只需要history.go(-N)就可以了。麻煩一點的是操作頁數的數量是不固定的情況,出於安全考慮我們沒有辦法直接訪問history記錄中的具體資訊,這時候就要結合history.length來實現返回到歷史記錄中的指定頁面。 history.length儲存的是歷史記錄中的頁數,包含當前頁面。頁面的跳轉、pushState操作都會使history.length + 1。 History.go(-1)或者點選返回按鈕只會返回歷史記錄中的頁面並不會使history.length - 1。 當前頁不處在歷史記錄中最後一頁的時候跳轉頁面,會以當前頁面處在歷史記錄中的位置為基礎新增記錄並覆蓋當前頁之後的頁面記錄 新的歷史記錄會變成下邊這樣 這樣就可以利用history.lenght長度的變化來計算需要返回的頁數。在需要返回的目標頁跳轉操作的第一頁後將history.length儲存到storage中,然後操作完畢後在操作的最後一頁使用操作頁第一頁的 history.length - 操作頁最後一頁的history.length - 1,就得到了需要返回的頁數 切記不要把目標頁的history.length 作為起始頁來記錄,因為無法保證目標頁處在歷史記錄的最後一頁單頁應用巧用history.go()、history.length返回到歷史指定頁面
相關文章
- 單頁面應用和多頁面應用
- VUE 單頁面應用 修改頁面titleVue
- 卡片跳轉快應用指定頁面,如何點返回直接退出快應用回到卡片
- vonic單頁面應用
- weex生成的單頁應用嵌入app中,點選物理返回鍵時如何返回上一個路由頁面,而不是直接退出單頁應用,回到原生app頁面APP路由
- 前端:你要懂的單頁面應用和多頁面應用前端
- js——頁面回到頂部JS
- 從頁面底部回到頂部+動畫效果 & 翻頁後從按鈕處回到頁面頂部動畫
- 如何從 SAP UI5 Not Found 頁面跳轉回到正常的應用頁面試讀版UI面試
- Android 外部喚起應用跳轉指定頁面Android
- 點選連結跳轉到應用指定頁面
- 一文讀盡前端路由、後端路由、單頁面應用、多頁面應用前端路由後端
- Vue單頁及多頁應用全域性配置404頁面實踐Vue
- 用Web Components構建單頁面應用Web
- 單頁面應用微信分享跳坑指南
- ng中的路由和單頁面應用路由
- 在vue單頁面應用當中使用sassVue
- webpack+react+antd單頁面應用例項WebReact
- 前端單頁面應用的許可權管理前端
- React如何優雅地寫單頁面應用?React
- 大型單頁面應用的進階挑戰
- history API 和錨點連結在單頁應用頁面切換中的應用API
- 移動Web單頁應用開發實踐——頁面結構化Web
- nginx 設定 404 500 頁面跳轉到指定頁面Nginx
- 原生JavaScript實現頁面回到頂部的功能JavaScript
- vue單頁應用如何在頁面重新整理時保留狀態資料Vue
- 關於單頁面應用的 Token Storage 設計策略
- 前端:將網站打造成單頁面應用SPA前端網站
- 使用 Webpack 為單頁面應用釋出新版本Web
- 快速構建H5單頁面切換應用H5
- 用SwiftUI寫一個簡單頁面SwiftUI
- 用Flutter 寫一個簡單頁面Flutter
- 單頁應用 - Token 驗證
- 構建單頁Web應用Web
- 單頁應用SEO淺談
- 簡單的網頁登入頁面網頁
- 使用Vue.js在WordPress中建立單頁面應用SPAVue.js
- (轉)前端:將網站打造成單頁面應用SPA前端網站