关于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