移动端兼容性问题整理
1.鸿蒙系统设置input标签的disabled为true不生效,仍然可以修改输入框里的内容
解决方案:通过设置input标签的样式的pointer-events为none来禁止修改内容
:style="{ 'pointer-events': disabledModify ? 'none' : 'auto' }"
2.通过urlLink的方式从浏览器环境打开微信小程序,获取query的key,在ios和鸿蒙中被编码了
安卓拿到的信息:
'{"AAA":210,"BBB":"L2tRT0xScFhxUytNM1pZTmhKRnZBZz09","CCC":"page?key=2851","DDD":"YES"}'
鸿蒙和ios拿到的信息:
'%7B%22AAA%22%3A210%2C%22BBB%22%3A%22L2tRT0xScFhxUytNM1pZTmhKRnZBZz09%22%2C%22CCC%22%3A%22page%3Fkey%3D2851%22%2C%22DDD%22%3A%22YES%22%7D'
很明显被编码了
解决:通过wx.getSystemInfoSync()获取当前系统信息来进行区分处理,针对鸿蒙和ios需要进行一次解码操作
let res = wx.getSystemInfoSync();
const decodedKey = ['ios','ohos'].includes(res.platform) ? decodeURIComponent(rawKey) : rawKey;
3.vue项目ios中通过iframe打开高德地图失败
问题:使用location.herf直接打开高德地图,在安卓和ios上正常显示地图。由于地图的展示需要标题,于是便新增了一个路由页面使用iframe用来渲染地图,把地图的url当作参数传递给这个页面
此时安卓正常显示,ios报错 key 不对,后抓包发现,ios中地图的路径被截断了。
解决:将地图路径的&转换成asc值%26