iOS 9 Safari webkit 仅在 iPad 上崩溃(iPhone 工作正常)

Posted

技术标签:

【中文标题】iOS 9 Safari webkit 仅在 iPad 上崩溃(iPhone 工作正常)【英文标题】:iOS 9 safari webkit crash only on iPad (iPhone works fine) 【发布时间】:2015-12-07 23:02:26 【问题描述】:

我有一个使用 python/django 后端的 Web 应用程序,并在前端使用了大量的 CSS3 动画和大量的 javascript。这个问题让我有点发疯,所以我只是想看看是否有人对此有任何想法。

该网站在运行 ios 9.2 的 iPad mini 上崩溃了 webkit。 Safari 和 chrome 都会崩溃。 Safari 提供以下通知:

A problem occurred with this webpage so it was reloaded

崩溃发生在内容显示之后,然后才触摸任何东西。有时它会重新加载,直到:

A problem repeatedly occurred on ...

其他时候它最终会加载页面,然后在滚动页面后崩溃。在极少数情况下,网站会在清除浏览器缓存后运行。

它在这些设备上完美运行:

iPhone 3 iOS 7 iPhone 4 iOS 7 iPhone 5 iOS 9.2 iPhone 6 iOS 9.2 机器人 Windows 移动版 所有 Windows 和 Mac 桌面 Chrome、Safari、IE、Firefox

没有明显的内存泄漏,如时间线所示,包括页面加载和滚动浏览网站内容,动态将 javascript 对象和元素添加到 dom:

导致问题的一般程序:

收集现有 DOM 元素,其中包含具有 css backgound-image:url() 的元素 从 DOM 中删除现有元素。 然后将元素重新插入到新容器元素中的 DOM 中

【问题讨论】:

【参考方案1】:

我相信我找到了错误...

当您在包含 css background-image:url(),z-index:-1; 的元素上应用 css transform:translate3d(); 时,显然 Safari 9(仅限 iPad)不喜欢它

删除 translate3d 改善了问题,但性能下降 可怕,仍然随机崩溃。

删除背景图像完全解决了问题,但 要求。

最后,我能够保留背景图像和 translate3d 只要我删除了 z-index。

简而言之,如果您在 ipad 上的 Safari 9 中遇到持续崩溃,请尝试删除所有负 z-index 并查看是否可以解决问题。

【讨论】:

以上是关于iOS 9 Safari webkit 仅在 iPad 上崩溃(iPhone 工作正常)的主要内容,如果未能解决你的问题,请参考以下文章

SafariServices,以及WebKit在iOS 9上的新变化

iOS8 Safari -webkit-overflow-scrolling:触摸;问题

webkit-backface-visibility 崩溃 safari 和 chrome (IOS)

macOS+iOS:Safari和Webkit停止支持SHA-1证书了

仅在满足某些条件时才调用 Safari Content Blocker 扩展?

Safari 9 仅在画布上绘制视频的第一帧(错误)