vue 使用微信JSSDK,在IOS端会授权出错

原因:

vue-router切换的时候操作的都是浏览器的历史记录,iOS会把第一次刚进入时的URL作为真实URL,安卓会把当前URL作为真实URL。

所以导致后端在配置好的授权参数获得的config参数和微信sdk获取的参数是不一样的。

解决方案: 修改路由 index.js

{
path: '/namecheck',
component: NameCheck,
beforeEnter:(to,from,next)=>{
var u = navigator.userAgent;
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
// XXX: 修复iOS版微信HTML5 History兼容性问题
if (isiOS && to.path !== location.pathname) {
// 此处不可使用location.replace
location.assign(to.fullPath)
} else {
next()
}
},
name: 'namecheck',
meta: {
requireAuth: true,
}
},

window.location.assign(url) : 加载 URL 指定的新的 HTML 文档。 就相当于一个链接,跳转到指定的url,当前页面会转为新页面内容,可以点击后退返回上一个页面。

window.location.replace(url) : 通过加载 URL 指定的文档来替换当前文档 ,这个方法是替换当前窗口页面,前后两个页面共用一个

窗口,所以是没有后退返回上一页的