当前位置: 首页 > 知识库问答 >
问题:

vue-router - Vue 路由 hash 模式在微信 H5 页面分享时 iOS 异常,如何解决?

江宏深
2024-06-12

Vue 中路由使用 hash 模式,开发微信 H5 页面分享时在安卓上设置分享成功,但是 iOS 的分享异常。

iOS 当前页面分享给好友,点击进来是正常,如果二次分享,则跳转到首页;使用 vue router 跳转到第二个页面后在分享时,分享设置失败;以上安卓分享都是正常。

简单分析一下问题,jssdk 是后端进行签署,前端校验,但是有时跨域,ios 是分享以后会自动带上 from=singlemessage&isappinstalled=0 以及其他参数,分享朋友圈参数还不一样,貌似系统不一样参数也不一样,但是每次获取 url 并不能获取后面这些参数

共有1个答案

广乐邦
2024-06-12

你这个问题是因为跨域问题导致,重定向失败。

有两种解决方案,希望能帮助你。

解决方案优化

方案1: 使用 window.location.href 进行跳转

可以使用 window.location.href 进行跳转,而不是使用 Vue Router 的 this.$router.push。这样可以确保地址栏的地址与当前页一致,从而可以成功分享页面。这种方法适用于需要分享的页面较少的情况。作为一个单页应用,这样的刷新页面跳转方式依然可行。

示例代码:

// 旧方法: this.$router.push('/new-page');// 新方法: 使用 window.location.href 跳转window.location.href = '/new-page';

方案2: 保存在本地的入口地址

在用户首次进入应用时,将入口地址保存在本地存储中。当需要获取签名时,从本地存储中取出入口地址。注意,只在刚进入单页应用时保存入口地址。

示例代码:

// 仅在用户首次进入应用时保存入口地址if (!sessionStorage.getItem('initialHref')) {  const href = window.location.href;  sessionStorage.setItem('initialHref', href);}// 需要获取签名时,从本地存储中取出入口地址const initialHref = sessionStorage.getItem('initialHref');

通过这种方法,可以确保每次获取签名时使用的都是用户首次进入应用时的入口地址,从而避免分享链接失败的问题。

 类似资料:
  • 本文向大家介绍区分vue-router的hash和history模式,包括了区分vue-router的hash和history模式的使用技巧和注意事项,需要的朋友参考一下 一、概念   为了构建 SPA(单页面应用),需要引入前端路由系统,这也就是 Vue-Router 存在的意义。   前端路由的核心,就在于:改变视图的同时不会向后端发出请求。   为了达到这种目的,浏览器当前提供了以下两种支持

  • 推荐直接使用官方 vue-router,VUX部分组件支持link属性直接支持vue-router的路由参数,vux2模板内置了vue-router。 如果使用了过渡(转场动画),在iPhone上使用左划返回时动画会再执行一遍,目前没有找到可行的处理方法,如果你有处理方案,欢迎PR。 https://github.com/airyland/vux/pull/2259

  • 什么是路由 后端路由 对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源。 当前端输入url请求资源时,服务器会监听到是什么url地址,那后端会返回什么样的资源呢?后端这个处理的过程就是通过路由来分发的。 总结:后端路由,就是把所有url地址都对应到服务器的资源,这个对应关系就是路由。 前端路由 对于单页面应用程序来说,主要通过URL中的hash(url地址中的#

  • 本文向大家介绍vue单页面在微信下只能分享落地页的解决方案,包括了vue单页面在微信下只能分享落地页的解决方案的使用技巧和注意事项,需要的朋友参考一下 实际上关键词叫 微信pushState只能分享落地页 更贴切一点 应用场景: vue + vue-router vue-router使用hash模式(history模式没试过) 不使用微信的js-sdk(因为我这个项目是可配置域名的商城,比较特殊,

  • 多页面的配置如下: 在充值中心配置的路由守卫是想在访问 http://localhost:9000/recharge-center/xxx不存在的页面时重定向到充值中心页面,即 http://localhost:9000/recharge-center,但实际上却会重定向到主页,在控制台也可以看到没有进入充值中心的路由守卫钩子函数,而是进入了主页的钩子函数。 主页的路由: 充值中心的路由: 望解答

  • router配置 点击进去页面时 这样点击后页面会出现但是刷新或者跳转别的路由会报错 刷新报错: 跳转其他路由报错: 如何解决?

  • 本文向大家介绍详解vue-router 动态路由下子页面多页共活的解决方案,包括了详解vue-router 动态路由下子页面多页共活的解决方案的使用技巧和注意事项,需要的朋友参考一下 我们都知道 vue-router 的动态路由匹配 对组件是原地复用的策略,需要我们在组件中根据不同的 $route 参数展示不同的数据,这在大部分情景下是很高效的做法,但这无疑增加了组件的复杂度,而且不同参数间切换因

  • 本文向大家介绍vue vue-Router默认hash模式修改为history需要做的修改详解,包括了vue vue-Router默认hash模式修改为history需要做的修改详解的使用技巧和注意事项,需要的朋友参考一下 主要是因为活动页会存在pc端的时候未登录的用户也需要访问的问题,因为未登录用户在活动页面进行操作的时候会触发到登录事件,然后我们实现的方式是通过接口来判断,该接口标记的是一个u