解决vue中微信分享功能#带来的链接错误问题
在vue项目中遇到了分享功能的bug,就是无论从什么地方,那个页面分享出去的链接地址,点击链接进来的都是首页,这就是#带来的坑,看下面代码 :
//正常的链接地址是这样的 var url=www.baidu.com/#/..... //通过微信分享出去的地址应该也是一样的 //我们认为地址是这样的 var url=www.baidu.com/#/..... //其实他是这样的 var url=www.baidu.com/?#/..... //当你点击链接发送请求的时候,他就变成这样了 var url=www.baidu.com/ //也就是参数全都没有了,所以进入首页了
那么怎么去解决这个问题呢?我先来说我们应该怎么做
//首先我们已经知道原因了,就是因为#的问题导致的,那么好,我们直接去掉# var url=www.baidu.com//..... //把#去掉,但后面的所有参数还是需要保留的
到这里,我们就需要解决地址不对的问题了,先说一个需要后端帮助的方法
//当用户点击链接将要进入的时候,让后端去判断一下这个链接有没有#,没有的话补上从新按照新连接发送就可以了 //后端获取的是这样的 var url=www.baidu.com//..... //补全后是这样的 var url=www.baidu.com/#/..... 这就可以了
还有一种方法就是‘不求人’,自己解决,window.location里面就包含了请求的所有东西,那么我们就可以利用起来,
从图里面可以清晰地看到所有的参数,路径。。。那么我们就得想办法利用起来,我们可以利用路由守卫和编程式导航一起解决问题:
//这里首先我们用路由守卫 //全局路由守卫 router.beforeEach(to,from,next){ //这里假设我们利用window.location获取到我们需要的各种参数 vueRouter.push({参数}) } //独享守卫的话和全局的差不多就是放在设专业的路由里面去设置,我就不写了
当然,后面这个方法有些麻烦,还是看你怎么方便怎么来!