1

我正在创建在 iBooks 下运行的脚本化电子书。他们使用 JSsetTimeout和/或requestAnimationFrame. 在对动画运行如此缓慢的原因进行了广泛调试之后,我发现计时器正在触发,而不是在我要求的 20-50 毫秒内(并进入桌面上的 Chrome 或 Safari),间隔时间超过 10 倍,有时长达一秒或更长时间(这是setTimeout,因为显然requestAnimationFrame/webkitRequestAnimationFrame在 iOS 中不可用,或者至少在 iBooks 版的 webkit 中不可用)。

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

或者这是否与 setTimeout 被报告在滚动期间不起作用有关(尽管在我的情况下不涉及滚动)?

供您参考,我正在做的动画类型不是可以使用可能是硬件加速的 CSS 动画来实现的。

底线,有没有人知道如何在 iPad 上的 JS 中获得更精细的计时器粒度,无论是在 iBooks 还是 Safari 中?

4

1 回答 1

1

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

于 2013-06-29T15:04:49.817 回答