记 vue-router 在微信浏览器中操做history URl未改变的解决方案

背景

在PC端和手机浏览器中router.replace() or router.push()可以正常使用,页面的地址和页面都正常显示;可是在微信中,从/a页面经过router.push('/b')跳转到/b页面后,页面正常,可是复制浏览器的地址会发现其地址仍为/a;选择在浏览器打开发现也是显示的/a的页面。
这应该是微信浏览器那边的问题,微信浏览器只会记住你第一次进来的地址。ios

微信浏览器不会自动添加 #

在pc端或者手机浏览器开发的时候 输入localhost:8080,浏览器会自动跳转到localhost:8080/#/,可是在微信浏览器中,虽然页面显示正常了,可是咱们经过微信右上角的选项复制当前的地址,会发现地址为仍然localhost:8080,这后面致使了其余的 router.push()操做都没法修改微信浏览器的url;固然,若是咱们在程序中alert(location.href)是正常的。浏览器

  • 解决方案

在进入页面的时候咱们默认的给url加上#,即localhost:8080/#/,再次测试后发现 安卓 中微信浏览器的url和咱们项目中的url相对应了。微信

iOS中微信浏览器url仍然不对应

处理完上面的问题后测试安卓机正常了,可是iOS机型微信中在/b页面复制地址中仍然/a页面,查看资料网上不少人都说能够经过连接的方式处理。测试

1.用history的时候,把router-link换成a标签跳转,url

个人处理方式是点击跳转后直接使用window.location.herf = 'localhost:8080/#/b'的方式,即直接拼接好跳转的后路由地址。暂时解决了这个问题
由于我在项目中测试只有ios在微信中出现这个问题,因此只针对ios在微信中特殊处理。其余状况下仍是经过hash路由正常处理。code

相关文章
相关标签/搜索