带‘#’的字符串,在iOS系统里的小程序中,都丢失了
发布于 6 年前 作者 yanjing 19660 次浏览 来自 问答

你想反馈一个 Bug 还是 提一个需求?

bug

如果是 Bug:

* Bug 表现是什么?预期表现是什么?

在webview中通过navigateTo跳转到另一个webview,携带了一个URL作参数,该URL中带有字符‘#’,在新webview的onLoad中解析得到该URL并打开,结果是:在安卓手机、开发工具里没问题,在iOS里面打不开,通过wx.showModal打印看到的是字符‘#’丢失了,在安卓手机、开发工具里打印出来是正确的

* 如何复现?

直接打印个‘#’也会丢失

* 提供一个最简复现 Demo

直接打印个‘#’

10 回复

尝试过很多方法了

比如:传参前替代#,打开时替换回来。

打开时正则匹配缺少#的,就加上。

加斜杠。

都不行,感觉就是在iOS的小程序里,变量带#的都被删掉了

我是在webview的h5里面,把url通过navigateTo带参数传递到小程序代码里,类似:

  window.wx.miniProgram.navigateTo({
     url: `../webview/index?openURL='URL(含‘#’号)'`
  })

然后在小程序里通过webview打开这个URL,

结果是:在安卓手机、开发工具里没问题,在iOS里面打不开

encodeURIComponent一下试试

   let urlParam = `../webview/index?url=${Vue.prototype.$base64.encode(encodeURIComponent(url))}`
   window.wx.miniProgram.navigateTo({
     url: urlParam
   })

这是在H5在小程序内的跳转

   let decodeURL = decodeURIComponent(util.base64.decode(url))

这是小程序里跳转的时候的解析

在安卓手机、开发工具里没问题,在iOS里面打不开

使用了encodeURIComponent

使不使用都不行

是说web-view组件还是小程序页面调用navigateTo?

没有解决方法吗?还是说我的写法不对?

还是一样的~加个‘\’后,安卓里看到的结果是多了个‘\’而打不开了,iOS里面看到的就只有个‘\’没有‘#’~

你转义一下试试看在#前面加个\

回到顶部