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

2023-10-29

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

其中这个方法接受一个path参数,也就是我们要分享的页面,当path带参数时,我们知道 ?后面的参数会被浏览器忽略掉,所以我们一般会对其进行encodeURIComponent,使用时进行相应的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))}`;

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

仅仅用来记录开发时所遇到的坑~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 1-创建小程序项目

    注册 打开https mp weixin qq com 点击 立即注册 选择小程序 获取APPID 登录小程序在 开发管理 gt 开发设置 获取 APPID 开发工具 登录小程序在 开发工具 gt 开发者工具 获取 微信开发者工具 创建小程
  • 内网穿透的应用-使用Net2FTP轻松部署本地Web网站并公网访问管理内网资源

    文章目录 1 前言 2 Net2FTP网站搭建 2 1 Net2FTP下载和安装 2 2 Net2FTP网页测试 3 cpolar内网穿透 3 1 Cpolar云端设置 3 2 Cpolar本地设置
  • 拼多多详情API开启运营比价新纪元

    随着互联网的快速发展 电商行业正在迅速崛起 拼多多作为一家新兴的电商平台 凭借其独特的营销策略和创新的商业模式 成为了电商行业的一匹黑马 在拼多多的成功背后 其详情API接口营销起到了至关重要的作用 本文将详细介绍拼多多详情API接口营销的
  • ECMAScript简介及特性介绍

    ECMAScript 简称ES 是JavaScript的规范 同时也是被广泛采用和实现的脚本语言标准 从最初的1996年推出第一版至今 ECMAScript已经经历了数十年的发展和改进 成为了互联网开发中的重要基石之一 本文将对ECMASc
  • 【连续和自适应资源需求估计】通过不断应用在线优化、选择和估计,SARDE能够有效地适应在线跟踪,并使用得到的集成技术减少模型误差(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据 文章
  • Web 安全漏洞之 OS 命令注入

    什么是 OS 命令注入 上周我们分享了一篇 Web 安全漏洞之 SQL 注入 其原理简单来说就是因为 SQL 是一种结构化字符串语言 攻击者利用可以随意构造语句的漏洞构造了开发者意料之外的语句 而今天要讲的 OS 命令注入其实原理和 SQL
  • 微信怎么申请小程序商城?一步步教你完成

    随着移动互联网的发展 越来越多的企业和个人开始关注微信小程序 微信小程序是一种不需要下载安装即可使用的应用 它实现了应用 触手可及 的梦想 用户扫一扫或者搜一下就能打开应用 其中 小程序商城因其便捷性和实用性 受到了众多商家的青睐 那么 如
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • 每天10个前端小知识 <Day 7>

    前端面试基础知识题 1 什么是尾调用优化和尾递归 尾调用的概念非常简单 一句话就能说清楚 就是指某个函数的最后一步是调用另一个函数 function f x return g x 上面代码中 函数f的最后一步是调用函数g 这就叫尾调用 尾调
  • 前端基础:回顾es6相关知识

    Author note 题记 ECMAscript is international standard of javascript ECMA 是 js的国际标准版语言 let and const 为什么之前用var现在需要用let cons
  • 「网络安全渗透」如果你还不懂CSRF?这一篇让你彻底掌握

    1 什么是 CSRF 面试的时候的著名问题 谈一谈你对 CSRF 与 SSRF 区别的看法 这个问题 如果我们用非常通俗的语言讲的话 CSRF 更像是钓鱼的举动 是用户攻击用户的 而对于 SSRF 来说 是由服务器发出请求 用户 日 服务器
  • 基于java的web仓库管理系统设计与实现

    基于java的web仓库管理系统设计与实现 I 引言 A 研究背景和动机 基于Java的Web仓库管理系统是近年来快速发展的领域之一 它提供了丰富的功能 如数据存储 数据检索 数据分析和数据可视化等 本文将重点介绍基于Java的Web仓库管
  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • 探索Web开发的未来——使用KendoReact服务器组件

    Kendo UI 是带有jQuery Angular React和Vue库的JavaScript UI组件的最终集合 无论选择哪种JavaScript框架 都可以快速构建高性能响应式Web应用程序 通过可自定义的UI组件 Kendo UI可
  • 【计算机毕业设计】北京医疗企业固定资产管理系统的设计与实现 _4c4c1

    近年来 人们的生活方式以网络为主题不断进化 北京医疗企业固定资产管理就是其中的一部分 现在 无论是大型的还是小型的网站 都随处可见 不知不觉中已经成为我们生活中不可或缺的存在 随着社会的发展 除了对系统的需求外 我们还要促进经济发展 提高工
  • HTML概述、基本语法(表格整理、标签、基本结构)

    一 HTML概述 HTML指的是超文本标记语言 超文本 是指页面内可以包含图片 链接 声音 视频等内容 标记 标签 通过标记符号来告诉浏览器页面该如何显示 我们可以打开浏览器 右击页面 点击 查看网页源代码 来方便了解HTML标签通过浏览器
  • Vue3 和Vue2的区别,以及钩子函数的使用

    Vue js 3 和 Vue js 2 是两个主要版本的流行前端框架 它们之间有很多区别 包括性能优化 新特性和改进的API等 以下是一些Vue 3与Vue 2之间的主要区别 以及一些示例代码来说明这些差异 1 性能优化 响应式系统 Vue
  • 低代码配置-列表页组件设计

    保存 表单属性存放 bill 筛选项配置存放 filterLayout 列表按钮存放 buttonLayout 列表布局存放 listLayout api存放 api 数据结构 layout 存放表单基础配置 bill 存放按钮基础配置 b
  • 低代码配置-属性配置面板设计

    模块设计 tab项切换 组件基础属性 组件数据属性 组件事件属性 表单属性 模块输出函数设计 tab切换函数 列表表单属性 数据来源 调用接口时一次赋予 无需使用selectItem 如需使用 归入基础属性 列表标题 是否展示筛选区域
  • APP开发毕业设计|ssm爱心小屋公益机构智慧管理APP

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智

随机推荐

  • 从0到1设计通用数据大屏搭建平台

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • Python 多线程、多进程、协程对迭代数据的耗时操作测试

    Python 多线程 多进程 协程对迭代数据的耗时操作测试 2023 03 29 CPU计算密集型 2 17s p Python中的多线程受GIL制约 因此表面上的并行 实际上是并发 完全的计算密集型任务就和串行的耗时差不多了 Deal 耗
  • 阿里云数据库配置IP白名单操作方法(以MySQL为例)

    阿里云数据库RDS创建成功后 首次连接访问RDS需要配置IP白名单 在阿里云RDS控制台即可配置IP白名单 阿里云百科来详细说下阿里云服务器RDS配置白名单的方法 阿里云服务器配置IP白名单 阿里云百科以MySQL云数据库为例 RDS My
  • vc++常见错误之二:“fatal error C1083: ”无法打开包括文件

    这个问题产生的情况有多种 解决方法也有多种 我集合了网上的各种可能 可能不全 希望对你有用 其一 原文链接 http www cnblogs com txg blog archive 2011 03 07 1974857 html 步骤1
  • Nginx配置详解

    1 基本概念 1 1 Nginx简介 Nginx是一个高性能的HTTP和反向代理服务器 特点是占用内存少 并发能力强 事实上Nginx的并发能力确实在同类型的网页服务器中表现好 Nginx专为性能优化而开发 性能是其最重要的考量 实现上非常
  • SSM网约车管理系统毕业设计源码051630

    摘 要 时代的进步催生了一些事物 网约车便是近年社会发展的衍生物 并且在不长的时间内占领了大批市场 规模的日益扩大 一些负面的东西也开始浮出水面 犹如一颗石子投入水中 涟漪不断扩张 中国有句古话 无规则不成方圆 本文主要是针对网约车管理问题
  • 【python】迷宫游戏小游戏开发(代码+报告)【独一无二】

    博 主 米码收割机 技 能 C Python语言 公众号 测试开发自动化 荣 誉 阿里云博客专家博主 51CTO技术博主 专 注 专注主流机器人 人工智能等相关领域的开发 测试技术 迷宫游戏小游戏开发 代码 报告 目录 迷宫游戏小游戏开发
  • HTML中h标签和p标签,HTML 中 br 和 p 标签的区别是什么?

    HTML 中 br 和 p 标签的区别是什么 在 html 中 br 和 p 标签都可以实现文本的换行效果 那么它们之间有什么区别吗 下面本篇文章就来给大家介绍一下 br 和 p 标签的区别 希望对大家有所帮助 区别 在 HTML 中 br
  • ERP应收应付的操作与设计--开源软件诞生21

    赤龙ERP应收应付讲解 第21篇 用日志记录 开源软件 的诞生 点亮星标 祈盼着一个鼓励 博主开源地址 码云 https gitee com redragon redragon erp GitHub https github com red
  • 使用word文档插入代码方式

    熟悉编程工作的人员知道 经常会把代码往文档里面粘贴 如何优雅 快速的 美观的在word中进行插入代码了 可以使用样式工具 使用过程如下 1 新建代码端样式 找到该页面点击新建样式 2 设置字体 3 设置段落 4 设置边框 验证
  • PyTorch深度学习实践---笔记

    PyTorch深度学习实践 笔记 2 线性模型 Linear Model 2 exercise 3 梯度下降算法 Gradient Descent 3 1梯度下降 Gradient Descent 3 2 随机梯度下降 Stochastic
  • 【Command模式】C++设计模式——命令模式

    命令模式 一 设计流程探讨 二 模式介绍 三 代码实现 C 设计模式大全 23种设计模式合集详解 点我跳转 一 设计流程探讨 假如你正在开发一款新的文字编辑器 当前的任务是创建一个包含多个按钮的工具栏 并让每个按钮对应编辑器的不同操作 你创
  • Hive常用操作以及java.io.IOException: java.lang.RuntimeException: ORC split generation failed问题处理

    使用datagrip连接hive 切换数据库 use testdb create database testdb 创建表 create table t user id int name varchar 100 age int create
  • 基于表情识别的智能灯控-树莓派实现

    文章目录 前言 一 项目简介 项目思路 软硬件清单 原理图 接线图 实物图 二 代码与详解 1 获取天气 IP模块 2 gpio控制模块 3 表情识别模块 4 oled控制模块 5 主程序 三 总结 前言 这是我之前做的一个嵌入式课设项目
  • 解决Vue打包上线之后部分CSS不生效

    首先注释掉webpack prod conf js中下面的代码 new OptimizeCSSPlugin cssProcessorOptions config build productionSourceMap safe true map
  • 2023 年 06 月编程语言排行榜,推荐一份新手自学python的学习路线

    马上公布了6月的编程语言排行榜 python还是稳稳的第一呀 一起来看看吧 Tiobe编程排行前15名 Python 是一种面向对象 解释型的脚本语言 同时也是一种功能强大而完善的通用型语言 相比其他编程语言 比如 Java Python
  • 爬楼梯问题(DP、DFS、排列组合、递归)

    问题描述 假设你现在正在爬楼梯 楼梯有 n 级 每次你只能爬 1级或者 2级 那么你有多少种方法爬到楼梯的顶部 我们规定刚开始在第0层 下面介绍4种方法 1 动态规划 dp n 表示到达第n层台阶有dp n 种方法 转移方程 dp n dp
  • 多路复用

    1 多路复用的基本概念 多路复用 multiplexing 简称复用 是通信技术中的基本概念 多路复用多用在电路交换技术中 多路复用 Multiplexing 链路 网络资源 如带宽 划分为 资源片 将资源片分配给各路 呼叫 calls 每
  • Microsoft Edge浏览器崩溃,错误代码: STATUS_STACK_BUFFER_OVERRUN

    11日更新 谷歌浏览器升级后也有这个问题了 参照9日更新设置一下就可以 不过要设置的是chrome exe 具体步骤可以参考 Google Chrome谷歌浏览器崩溃 错误代码 STATUS STACK BUFFER OVERRUN 刘墨泽
  • 微信小程序分享页面,decodeURIComponent()解码的参数的坑

    相信不少同学在开发微信小程序的开发中 有不少同学涉及到分享的功能 分享api我们可以通过查阅微信官方文档知道onShareAppMessage方法 其中这个方法接受一个path参数 也就是我们要分享的页面 当path带参数时 我们知道 后面