iOS Javascript DOM“冻结?”

时间:2011-12-02 19:57:08

标签: javascript ios dom freeze

这里有几个问题:

  1. 是否有任何方法可以让iOS在滚动时禁止在页面上冻结javascript?

  2. 当您在其他标签页中或切换应用时,iOS是否会冻结javascript?

  3. iOS上还有其他主要的javascript限制吗?

2 个答案:

答案 0 :(得分:6)

iOS 6.x暂停所有事件计时器以响应滚动等触摸事件,并且在事件完成后不希望再次启动所有计时器。这是一个众所周知的iOS 6漏洞,非常烦人。它几乎打破了视差和东西。有些人已经建立了自己的滚动功能。

这是同一主题的另一个StackOverflow: iOS 6 safari, setInterval doesn't get fired

和另一个: setInterval pauses in iphone/ipad (mobile Safari) during scrolling

这是你最接近它的错误报告(Apple没有公开bug报告以保持完美的幻觉,因此开发人员制作了自己的bug网站):http://openradar.appspot.com/12756410 < / p>

这段代码将解冻在页面滚动期间被iOS破坏/丢失/破坏的计时器:https://gist.github.com/ronkorving/3755461

这是另一种修复冻结的尝试:iOS 6 js events function not called if has setTimeout in it

不幸的是,在页面滚动时,您无法触发事件。就像在向上滚动页面时淡出一个从顶部到顶部的链接。在滚动方面,iOS6无法揉搓它的肚子并轻拍它的头部。 (iOS5工作正常,顺便说一句。这是回归)

答案 1 :(得分:1)

要回答第三个问题,一个体面的限制是sometimes innerHTML just plain doesn't work。从接受的答案:

  

当手机的CPU非常繁忙(比如100%)时会发生这种情况。然后渲染引擎有时会忘记innerHTML设置。

     

我的unify项目中包含的解决方案是测试childNodes中是否有元素,否则再次应用它。