微信小程序分享页面,decodeURIComponent()解码的参数的坑

这篇具有很好参考价值的文章主要介绍了微信小程序分享页面,decodeURIComponent()解码的参数的坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

相信不少同学在开发微信小程序的开发中,有不少同学涉及到分享的功能,分享api我们可以通过查阅微信官方文档知道onShareAppMessage方法

其中这个方法接受一个path参数,也就是我们要分享的页面,当path带参数时,我们知道 ?后面的参数会被浏览器忽略掉,所以我们一般会对其进行encodeURIComponent,使用时进行相应的decodeURIComponent便可

但是最近却出现一个问题,小程序二次分享页面竟然打不开了,查其原因发现是二次分享时decodeURIComponent不起作用

可是明明拿到参数后decodeURIComponent了呀,为何decodeURIComponent后的参数还是未解码的

微信小程序分享页面,decodeURIComponent()解码的参数的坑

诡异的是,第一次分享的时候没有问题,这问题仅出现在二次分享时

于是,开始一顿排查,终于找到原因 

原来浏览器对链接带的参数又编码了一次,解码的时候需要解两次码才能得到原先的数据 

于是我三下五除二又加了一层解码,立马进行验证,

 const { url = "" } = this.$router.params;
 const webUrl = `${HOST}${decodeURIComponent(decodeURIComponent(url))}`;

惊喜,二次分享成功打开页面,打印出来的参数也是正常解码后的参数

但是我立马又联想到,三次四次五次等以上分享呢,果断测试了一下,上面的代码果然不顶用,这就要求我们进行一个判断了

我这边用到了递归来解决,具体实现如下

  getUrl (url) {
    if (url.indexOf('%') < 0) {
      return url
    } else {
      const newUrl = decodeURIComponent(url)
      return this.getUrl(newUrl)
    }
  }
Ï
 const { url = "" } = this.$router.params;
 const webUrl = `${HOST}${getUrl(url))}`;

当然,小伙伴们还可以通过循环去解决,道理是一样的,我这里就不做展示了

仅仅用来记录开发时所遇到的坑~文章来源地址https://www.toymoban.com/news/detail-495336.html

到了这里,关于微信小程序分享页面,decodeURIComponent()解码的参数的坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序携带参数的页面跳转

    日常我们在手机app购物的时候,点击app主页琳琅满目的商品,就会跳转到商品的具体页面。 无论我们点击哪个商品,跳转到商品具体页面的布局都是一样的,但页面内的数据不一样,比如说商品名称,图片等等不一样。这就是在点击商品的时候,在跳转到具体页面时候传递了

    2024年02月09日
    浏览(67)
  • 微信小程序 webview页面分享弹窗

    公司业务需要在webview中添加分享弹窗,可以发送给朋友及生成海报分享,因为好几个详情都需要这个功能,因此抽离了share-sheet的组件,ui效果如下图: 点击分享,显示以下弹窗 share-sheet.wxml如下: share-sheet.js如下: share-sheet.less如下: 一下均为真机测试,实际情况可能会随

    2024年02月11日
    浏览(53)
  • 微信小程序带参数分享界面、打开界面加载分享内容

    目录 带参分享 带参加载界面 分享功能是微信小程序常用功能之一,带参分享和加载可以让分享对象打开界面时看到和分享内容。 用户点击微信小程序右上角自带分享,或者点击自定义分享按钮进行分享时,可在onShareAppMessage函数定义分享行为。 分享界面路径可带参,可在路

    2024年01月16日
    浏览(56)
  • uniapp微信小程序全局分享和自定义页面分享

    uniapp 实现微信小程序的全局 转发给好友/分享到朋友圈 的功能。主要使用 Vue.js 的 全局混入 概念。 1.在项目根目录创建mixins文件夹,然后创建全局分享的 js 文件。mixins/share.js  2.在项目的 main.js 文件中引入该 share.js 文件并使用 Vue.mixin() 方法将之全局混入: 3.自定义页

    2024年02月13日
    浏览(58)
  • 微信小程序统一分享,全局接管页面分享消息的一些技巧

    前言 最近都在折腾自己的个人内容聚合小程序。除了作为原创专栏,视频教程的聚合。我有什么新的想法,产品创意,最终落地的东西都会放到这个小程序里。 而分享功能非常的重要,当某一个功能或文章打动用户的时候,能把这个小程序分享出去,就能带来裂变传播的效

    2024年02月15日
    浏览(50)
  • unapp微信小程序转发分享、携带参数

    这里有个uni官方文档的bug,uni官方文档并没有说明uni.showShareMenu有menus配置项,但是微信官方文档是有的。所以加上也是会生效的。 注意:配置了此项,此种方式优先级要比第二种方式要高,所以采用第二种方式就不能配置第一种方式。 下面是uni的文档配置项:官方文档 微信

    2024年02月01日
    浏览(64)
  • uniapp 微信小程序 动态分享 带参数

    uniapp 微信小程序 有动态参数的那种 微信小程序分享有两种分享。 第一种:就是右上角自带的菜单分享 第二种: button按钮通过open-type=\\\"share\\\" 点击分享 通常我们分享默认都是分享本页面 然后带一些分享参数比如说id uid等 直接放在url地址后面就可以了, 那如果我们使用 按钮

    2024年02月11日
    浏览(68)
  • 微信小程序wx.navigateTo传给子页面参数(单个参数、多个参数)

    子页面接收 传多个参数 子页面接受 假设值是后端传过来的动态的值

    2024年02月07日
    浏览(48)
  • 微信小程序如何实现页面传参和页面传递多个参数

    只要你的小程序超过一个页面那么可能会需要涉及到页面参数的传递,下面我总结了 4 种页面方法。 下面时多个参数页面传参的方式   通过在url后面拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 分隔;如 ‘path?key=valuekey2=value2’。 案例:

    2024年02月11日
    浏览(75)
  • 微信小程序路由以及跳转页面传递参数

    路由 在app.json的pages里面写 \\\"pages/页面/页面\\\" 直接保存pages直接生成非常方便  跳转页面 wx.navigateTo() 保留当前页面,跳转到应用内的某个非tabBar页面。 text bindtap=\\\"daka\\\"点击/text 会保留返回箭头 底部导航跳转在app.json写入即可 传参以及接收参数 1、本地存储 使用方法:和js差不

    2024年02月11日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包