这里有几个问题:
是否有任何方法可以让iOS在滚动时禁止在页面上冻结javascript?
当您在其他标签页中或切换应用时,iOS是否会冻结javascript?
iOS上还有其他主要的javascript限制吗?
答案 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中是否有元素,否则再次应用它。