#推荐
微信小程序分享页面,decodeURIComponent()解码的参数的问题

2022-01-11 0 683

相信不少同学在开发微信小程序的开发中,有不少同学涉及到分享的功能,分享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))}`;

当然,小伙伴们还可以通过循环去解决,道理是一样的。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝/QQ扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!305582964@qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有U点奖励和额外收入!

静鱼客栈 其他教程 微信小程序分享页面,decodeURIComponent()解码的参数的问题 https://www.52jyu.cn/14797.html

静鱼客栈的帅逼站长~

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP贵宾介绍。
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器没有下载完整造成的,可以重新进行下载即可~
查看详情

相关文章

发表评论
暂无评论
静鱼客栈-站长

为您解决烦忧 - 专业服务 看到消息会进行回复