前言

在安卓分享详情没这问题,但是ios这边出现分享到首页,猜测是vue-router出的问题,然后,去基佬网(github)逛一圈,发现问题所在,
链接

(一)原因

IOS:微信IOS版,微信安卓版,每次切换路由,SPA的url是不会变的,发起签名请求的url参数必须是当前页面的url就是最初进入页面时的url

Android:微信安卓版,每次切换路由,SPA的url是会变的,发起签名请求的url参数必须是当前页面的url(不是最初进入页面时的)

虽然,请求签名的url跟当前页面的url(location.href)对比明明是一样的

(二)解决方案

在main.js 中

import router from './router'

// so easy
router.beforeEach(function (to, from, next) {
  // loading 相关
  // Vue.$vux.confirm.hide()
  // Vue.$vux.toast.hide()
  const agent = navigator.userAgent
  const isiOS = !!agent.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()
  }
})

router.afterEach(function (to, from) {
})
Logo

前往低代码交流专区

更多推荐