脚本宝典收集整理的这篇文章主要介绍了

iOS 12 JS数组Bug,可能带来互联网风波,附修复方法

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

作者:明非
来源:https://fanmingfei.com/posts/...

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

网络上已经有人遇到 iOS 数组相关的一个Bug,似乎会酿成整个互联网风波。
Array state will be cached in iOS 12 Safari, is bug or feature? -- stackoverflow

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

Hax 也在V2这篇帖子中产生中分析了这个Bug出现的原因

先来使用 iOS 12 体验一下:
这是原网页
这是修复后的

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

点击网页上方的 Click Test,可以看到调用的是同一个函数,函数中的数组每次都会重新定义,但是这个数组还是会保持上一次 reverse 后的顺序。

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

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

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

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

总结

以上是脚本宝典为你收集整理的

iOS 12 JS数组Bug,可能带来互联网风波,附修复方法

全部内容,希望文章能够帮你解决

iOS 12 JS数组Bug,可能带来互联网风波,附修复方法

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过