7

似乎如果我正在滚动windowwindow.setInterval则在滚动发生时或之后不会附加/触发。有没有其他人看到同样的问题?

我是说...

  • 这可能是什么原因造成的?
  • 我能做些什么来解决这个问题?
4

4 回答 4

9

iOS 会暂停几乎所有响应用户触摸的操作,以确保其感觉反应灵敏。setInterval 问题是已知的,并且似乎没有解决方法。

滚动期间在 iphone/ipad(移动 Safari)中的 setInterval 暂停

编辑

在“冻结”期间,一旦用户释放屏幕,计时器将不会赶上。错过的事件不会被推迟,而是完全丢失(一个错误)。

于 2012-10-02T01:57:30.703 回答
3

找到了这个(可怕但惊人的)解决方法,它在 iOS 6.0 中对我有用:

https://gist.github.com/3755461

于 2012-11-20T03:10:41.210 回答
0

我不完全确定,但你可以使用 asetTimeout而不是setInterval? 无论如何,使用 setInterval 通常是不好的做法。

var delay = 100;
(function callee() {
    setTimeout(callee, delay);
})();
于 2012-10-02T02:05:11.233 回答
0

iOS6 Safari 存在一个错误,该错误会杀死在页面滚动时创建的计时器。

kTmnh 通过在滚动完成后重新创建计时器来解决此问题

https://gist.github.com/3798925

于 2014-02-25T06:10:57.850 回答