iPad上的iBooks / Safari中的JS计时器粒度非常差?

时间:2012-09-06 12:37:03

标签: ipad safari settimeout ibooks

我正在创建在iBooks下运行的脚本电子书。他们使用JS setTimeout和/或requestAnimationFrame制作动画。经过对动画运行速度如此缓慢的大量调试后,我发现计时器正在点亮,而不是我要求的20-50毫秒(并且在桌面上的Chrome或Safari中),间隔超过10次那么长,有时只要一秒或更长(这是setTimeout,因为显然requestAnimationFrame / webkitRequestAnimationFrame在iOS或至少在iBooks-ized版本的webkit中)。

经过进一步的研究,我发现这显然不像iPad问题那样是iBooks问题 - 我在iPad上的Safari中发现了类似的粒度。这只是一个慢速处理器的功能(我在iPad 2上进行测试),正如所讨论的那样here

或者这与报告的setTimeout报告在滚动期间不起作用如here所述(尽管在我的情况下不涉及滚动)?

为了您的信息,我正在做的动画类型不是可以使用CSS动画实现的动画,这些动画可能是硬件加速的。

总的来说,有没有人有任何想法如何在iPad上的JS中获得更精细的计时器粒度,无论是在iBooks还是Safari?

1 个答案:

答案 0 :(得分:1)

我发现问题在于iBooks在第一次打开,读取每个页面时打开(并运行脚本)时会读完整本书。此外,它似乎没有正确地确定来自当前打开页面的请求在其后台页面预读取工作中的优先级,因此直到预读取过程完成,这可能需要几十秒才能完成一本大型的,脚本繁重的书籍,计时器当前页面上的响应能力(无论setTimeout还是requestAnimationFrame)可能会受到严重影响。