vue单页应用,怎么在路径hash之前加一个?,就是#号之前?

开发一个微信公众号商城,ios端调起微信支付的坑,网上说可以通过在#号前面加一个?号解决,但是不知道这个?号该怎么加上去,是之前在服务器上配置还是说vue-router里面可以进行配置的?

阅读 7.1k
4 个回答

我现在的解决办法是进入支付页面后强制刷新一次,这样子安卓和ios授权域名就统一了

if (isIos) {
    if (sessionStorage.getItem('flag')) {
        sessionStorage.removeItem('flag')
    } else {
        sessionStorage.addItem('flag')
        location.reload()
    }
}

亲测可行,对于在hash之前加问好的方法没有测试,不知道是否可行

之前在网上看到过一个方法来hack (但是我没有尝试过)

我一般都直接使用history模式

地址如下:http://greedying.com/posts/pr...

function directRightUrl () {
  let { href, protocol, host, search, hash } = window.location
  const pathname = '/frontend/' // 解决支付路径问题添加的前缀,替换成你的
  search = search || '?'
  hash = hash || '#/'
  let newHref = `${protocol}//${host}${pathname}${search}${hash}`
  if (newHref !== href) {
    window.location.replace(newHref)
  }
}

在Router的base参数中添加'?'
例:base: '/?#/'

这种方式是可行的,但是使用微信返回会把页面都返回,体验不好,建议ios直接load页面

(window.location.href).replace(this.$route.path,'')

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题