情景:
在进行正常页面跳转操作后(页面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) }