iOS上的Mobile Safari在大页面上崩溃

Joh*_*erg 36 javascript css debugging mobile-safari

我有一个问题,当页面变得太大时,在使用jQuery加载和操作DOM时,Mobile Safari会崩溃.

我在iPhone和iPad上都遇到了同样的问题.

对移动页面进行故障排除以查找错误的最佳方法是什么?是否存在可能导致Mobile Safari崩溃的已知问题?

Joh*_*erg 28

我实际上发现了这个问题.我想的不是JS,而是CSS.我添加了一个类来进行CSS转换以淡化某些元素.对于匿名用户,这些元素已经display: none;且可能从未运行过不透明度过渡.

奇怪的是,过渡恰好是两个元素.那么为什么这只会在100多条评论的长线程上崩溃?

所以底线是:-webkit-transition在移动safari上崩溃了.


小智 21

有同样的问题,对我来说是-webkit-transform: translateZ(0);导致Safari崩溃的原因.


Mat*_*ias 19

我知道这个问题已经成功回答了,但我只是想把我的五美分放在一边,因为我在这个问题上碰到了我的头几次:

正如大多数答案已经指出的那样,它通常归结为记忆问题.几乎任何事情都可能是最后一点,最终提示"记忆堆"很像一个translateZ或其他任何东西.

但是根据我的经验,它与特定的实际CSS(或JS)命令无关.恰好是最后一次过渡太过分了.

对我来说很有帮助的是保留此时不可见的任何东西display: none.这可能听起来很原始但实际上可以解决问题.这是告诉浏览器渲染器此时不需要此元素并因此释放内存的简单方法.这样只要你隐藏你不使用,此时元素,你创造了各种各样的3D效果英里长的垂直滚动条.


ser*_*gio 12

任何iOS应用程序的主要问题是内存使用情况.因此,您的网页可能使用了太多内存.

Mobile Safari使用了一些聪明的技术,因此在任何给定的时间内,整个页面都不能驻留在内存中,而只是其中的一部分.也许您可以检查页面中是否有任何内容违反此机制或使其效率降低.

在任何情况下,为了更多地提供点建议,有关您的页面的更多信息将非常棒.

顺便说一下,您可以从设备存储的崩溃日志中获得一些提示.检查是否可以在"设置"下找到它:

  1. 一般
  2. 关于
  3. 诊断和使用
  4. 诊断和使用数据

如果是内存问题,你应该找到像"signal(0)"这样的东西; 不确定这是否仅仅意味着"由于内存使用而死亡",但我通常认为当我找到一个信号(0)时这是理所当然的.

否则,它可能会告诉你出了什么问题......

希望这可以帮助.