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
- weex生成的單頁應用嵌入app中,點選物理返回鍵時如何返回上一個路由頁面,而不是直接退出單頁應用,回到原生app頁面APP路由
- vonic單頁面應用
- 前端:你要懂的單頁面應用和多頁面應用前端
- Android 外部喚起應用跳轉指定頁面Android
- 如何從 SAP UI5 Not Found 頁面跳轉回到正常的應用頁面試讀版UI面試
- 手寫單頁面應用路由路由
- 從頁面底部回到頂部+動畫效果 & 翻頁後從按鈕處回到頁面頂部動畫
- 點選連結跳轉到應用指定頁面
- Vue單頁及多頁應用全域性配置404頁面實踐Vue
- 一文讀盡前端路由、後端路由、單頁面應用、多頁面應用前端路由後端
- webpack+react+antd單頁面應用例項WebReact
- 單頁面應用微信分享跳坑指南
- 在vue單頁面應用當中使用sassVue
- 前端單頁面應用的許可權管理前端
- 移動Web單頁應用開發實踐——頁面結構化Web
- nginx 設定 404 500 頁面跳轉到指定頁面Nginx
- vue單頁應用如何在頁面重新整理時保留狀態資料Vue
- 原生JavaScript實現頁面回到頂部的功能JavaScript
- 快速構建H5單頁面切換應用H5
- 關於單頁面應用的 Token Storage 設計策略
- 教你一招H5快應用快速回到首頁H5
- VUE單頁應用骨架屏方案Vue
- 使用 Vue + Flask 搭建單頁應用VueFlask
- webpack 搭建vue多單頁應用WebVue
- 單頁應用的優缺點
- 用Flutter 寫一個簡單頁面Flutter
- 用SwiftUI寫一個簡單頁面SwiftUI
- 使用Vue.js在WordPress中建立單頁面應用SPAVue.js
- 簡單的網頁登入頁面網頁
- [譯] 用 Flask 和 Vue.js 開發一個單頁面應用FlaskVue.js
- 【面試】Web 頁面請求歷程面試Web
- webpack 構建多頁面應用——初探Web
- webpack如何打包多頁面應用(mpa)Web
- 手把手教你 vue-cli 單頁到多頁應用Vue
- 微信單頁應用的那些事