vue公众号网页调用微信jssdk在ios手机中失败问题

271 阅读1分钟

问题描述

调用微信jssdk方法需要先进行签名, 签名时需要传入当前页面的url,但是在ios中页面跳转时实际url没有刷新,在需要调用的jssdk的页面中进行签名时获取的url实际是进入的第一个页面的url,会导致签名失败。

image.png

解决方案

在页面跳转时重新加载页面以刷新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做页面缓存