IOS 10.x 版本在 Taro 中的兼容性问题
最后更新于
最后更新于
踩坑记录,Taro 在 ios 10.x.x 版本中 整个页面卡死
此前也收到过类似的反馈,但基数很小,所以忽略了。
本次所属商家:漫滋烧肉居酒屋 活动:分销 订单数量:8600 单
收到 8-10 名用户反馈订单列表页面无法正常操作,通过收集用户数据,发现问题集中在 ios 9 和 ios 10 系统。
依然用着 13 以下系统的用户仅占 2%。
下载完后打开对应版本的模拟器,调试发现以下错误:
字面意思就是尝试对一个只读属性赋值。
TrackJS 指出,这个报错是一个 ios 中 webkit 内核的 bug(而且每个框架都以独特的方式遇到这个问题.)
WebIDL attributes should be implemented as getters and setters on the prototype object.
找了一圈,最后在 tarojs 的源码看到了这一句
这个函数是 taro 中的 Toast,Modal,Loading 等所有携带蒙版组件的注销方法。项目中到处都有用到,坑是真坑啊!!!!!!
说说几个解决方法:
判断用户的 ios 版本,如果在 11 以下,则绕过所有带蒙版的组件的渲染,关闭那 2%用户的体验,换取 bug 的修复。
给 taro 官方对应的版本提 issue,等待修复。就等到一千年以后。
将当前 tarojs 源码复制出来,修改后发布到自己的仓库,后期项目开发依赖这个版本,还可以魔改 taro。
让我们来康康这两个版本依然健在的用户量
问题还是要解决的,我们从根源出发,模拟用户的系统。 使用 ios 开发者工具 xcode,在 components 中找到 10.3 系统并下载。
早在 18 年的时候就有人向 Taro 开发团队反馈了这个问题,但是: