iOS 12 JS数组Bug,可能带来互联网风波,附解决方案

在iOS12的Safari浏览器中发现一个JavaScript数组逆序的Bug,此问题导致数组在网页刷新后顺序颠倒,可能严重影响应用功能。苹果是否能通过热补丁修复尚不清楚。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

喜气洋洋,被安利使用iOS12,红红火火,更新最新版本。

网络上已经有人遇到 iOS 数组相关的一个Bug,似乎会酿成整个互联网风波。

Array state will be cached in iOS 12 Safari, is bug or feature? -- stackoverflow

iOS 12 的 safari 有哪些变化吗?今天发现了一个 javascript 的问题 - V2EX

先来使用 IOS 12 体验一下:

这是原网页

这是修复后的

点击网页上方的 Click Refresh,可以看到,网页刷新后,原网页中,数组的顺序在第二次访问网页的时候,变成了倒序,即便是关闭网页重新进来,也会是倒序的。如果反复刷新几次,数组将会反复倒序。看起来是 Webview 将这个数组缓存了。

通过测试,Array的其他API并没有这种问题,包括手动改变数组中的元素顺序,都不会出现这种问题,目前只发现了使用 reverse 出现这种问题。

当我们使用 reverse 去改变数组顺序的时候,那么数组的顺序一定对我们来说特别重要,如果第二次进来还是最后的顺序,这将对我们的应用产生非常大的影响!

紧急写了一个文件来应对这个问题,如果有必要,大家可以使用,如果有问题欢迎大家PR。 array-reverse-ios12

不知苹果是否可以通过 HotPatch 来修复这个问题,如果不能那可能只能下次版本升级了。以苹果的量级,这个版本可能会有影响很多用户。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值