总结一下 工作中遇到IOS14系统的兼容性问题

392 阅读3分钟

前言

老规矩 开篇是不可能直接写内容的
一肚子气不吐出来 我怕是要憋死  
从上周结束的时候我就知道 我下一期的任务是重构首页
原来的首页是前同事写的(代码毫无规范,主打一个随性,说难听点就是四千行的屎山)
我重构的新首页,要完完全全改变布局,首页里还有一个小地图、轮播图、多种多个弹窗及弹出层等等
所以我这周的工作压力炒鸡大 , 而且周一开了一天的会,
又要我下周一必须要上线测试,也就是说我只有四天的开发时间...

那即使在我开发时间这么紧张的情况下,昨天上午6.15号,公司客服反反复复反馈回来一个问题,我开始以为是个别用户手机网络卡、或者用户操作的问题,但这天已经是第四个用户有问题,我就感觉到了不妙.

问题是这样.

问题1 特殊的样式 IOS14 系统无法编译

我们公司上个星期,把商城所有套餐的价格上调了60元,且给每个用户发放了两张60元的优惠券,但是用户在使用优惠券的时候,没有展示出来

页面如下:

微信图片_20230616092556.jpg

具体的代码我就不贴了, 但是可以从按钮 "确定" 推测出来 优惠券的DOM元素是渲染出来的,但是不知道为何没有展示(这种问题,我也是第一次见).

我和同事反反复复排查了各种问题 譬如 v-ifv-for的优先级、 === ==的逻辑是否正确 等等等,代码一直删删改改.

后来我感觉是手机机型的问题,抱着这个想法,我去后端的日志上,找到了这个用户的机器信息 如下 微信图片_20230616143345.png

果不其然,我看到了 IOS14 我立刻找来了公司客服的一部手机,查看之后发现就是 IOS14 系统不知道什么原因一直无法编译DOM元素.

然后又是继续排查,一直尝试各种方法,在我即将放弃的时候,我突然有了思路 既然 "确定" 按钮可以渲染出来,那优惠券不能,是不是样式问题呢

然后找到了这么一行代码 Snipaste_2023-06-16_09-29-22.png 这样写应该是为了兼容chrome浏览器,可能因为这里吗?
注释掉之后, 还真的是!!! 沃德法!!!!

这是正常渲染出来的优惠券

Snipaste_2023-06-16_09-26-25.png

问题2 IOS14 时间戳显示NaN

这个问题就比较久远了, 大概是一两个月前, 现在突然想到 做个总结

问题展示

和上个问题一样 也是 IOS14 系统内部的问题

当时也是抓狂了很久,不知道是哪里出的问题

微信图片_20230616091932.jpg

猜测原因

IOS14 系统无法编译 - 这个符号, 所以所有的时间戳都成了NaN

解决方法

引入第三方包 day.js 时间戳让第三方库去处理

微信图片_20230616091939.png

贴一句代码
dayjs方法执行你需要的时间戳.format方法去决定时间戳的格式


item.pay_time = item.pay_time ? dayjs(item.pay_time).format('YYYY-MM-DD HH:mm:ss') : null