wx.navigateTo({
url: "/pages/index/index?url=" + encodeURIComponent("https://kejiweixun.com"),
});
在上面的例子中,向页面传入一个 url 参数,并按照标准做法,先对 url 进行 encodeURIComponent
,然后在目标页面 decodeURIComponent
这个 url,以为这样就可以了,但通过转发打开这个页面时,decodeURIComponent
可能无效。
微信社区的相关问题:
根据这篇文章的分析,decodeURIComponent
并不是无效,而是在转发的过程中,页面参数不知为何被 encodeURIComponent
了多次,而你的代码只对页面参数 decodeURIComponent
了一次。文章作者的解决办法是根据 url 中是否包含 %
,而对 url 进行一次或多次 decodeURIComponent
。
另一个解决方法是把 url 转换为 base64 字符串,但 base64 可能包含 +
、/
、=
这三个字符,用在 url 时同样需要先 encodeURIComponent
,这和直接使用 url 无区别,所以不要使用原版 base64,而是使用使用 base64 的衍生版 base64Url。
相关文章: