问题描述
调用微信jssdk方法需要先进行签名, 签名时需要传入当前页面的url,但是在ios中页面跳转时实际url没有刷新,在需要调用的jssdk的页面中进行签名时获取的url实际是进入的第一个页面的url,会导致签名失败。
解决方案
在页面跳转时重新加载页面以刷新url
router.beforeEach((to, from, next) => {
console.log('beforeEach from', from, to)
console.log('to path', to.path, location)
const toPath = process.env.VUE_APP_PUBLIC_PATH + to.path
if (!isAndroid() && toPath !== location.pathname) {
location.assign(process.env.VUE_APP_PUBLIC_PATH + to.fullPath)
}
next()
})
function isAndroid() {
const u = navigator.userAgent
const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1
console.log('isAndroid', isAndroid)
return isAndroid
}
存在问题 在ios中每次跳转页面相当于重新刷新了当前页面,所以vuex中存储的数据清空,也无法用keep-alive做页面缓存