關於vue-router中點擊瀏覽器前進后退地址欄路由變了但是頁面沒跳轉/回退不刷新


情景:

在進行正常頁面跳轉操作后(頁面A跳轉到頁面B),點擊瀏覽器的左上角的‘后退’按鈕,點擊后,可以看到url地址已經發生了變化(url由頁面B變為頁面A),hash值也已經是上一頁的路由,但是瀏覽器顯示的內容卻沒有發生變化(依舊是頁面B)

沒有任何報錯(頁面A和頁面B無任何js錯誤或者兼容性錯誤)。

百度查了很多,就是hash模式導致的,所以重新觸發下hashchange事件解決了問題,

解決辦法:

1、vue-router HTML5 History 模式  可以設置為history 模式解決問題

a、首先學習下hash模式的url相關知識 

  

  

  b、對,就是通過onhashchange 事件來解決這個bug

    APP.vue入口中:

    

mounted() {
            // 檢測瀏覽器路由改變頁面不刷新問題,hash模式的工作原理是 hashchange事件
            window.addEventListener('hashchange', () => {
                let currentPath = window.location.hash.slice(1)
                if (this.$route.path !== currentPath) {
                    this.$router.push(currentPath)
                }
            }, false)
        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM