首页 > 其他 > 详细

关于vue-router中点击浏览器前进后退地址栏路由变了但是页面没跳转/回退不刷新

时间:2021-06-15 16:08:58      阅读:31      评论:0      收藏:0      [点我收藏+]

情景:

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

 

关于vue-router中点击浏览器前进后退地址栏路由变了但是页面没跳转/回退不刷新

原文:https://www.cnblogs.com/sharon520/p/14884724.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!