iOS 6的safari,setInterval不会被触发

时间:2012-10-02 01:49:53

标签: javascript ios javascript-events safari setinterval

似乎我在滚动window时,window.setInterval在滚动发生时或之后没有附加/触发。 还有其他人看过同样的问题吗?

我的意思是......

  • 导致这种情况的原因是什么?
  • 我该怎么做才能解决这个问题?

4 个答案:

答案 0 :(得分:8)

iOS停止几乎所有内容以响应用户触摸,以确保它感觉响应。 setInterval问题是已知的,似乎没有解决方法。

setInterval pauses in iphone/ipad (mobile Safari) during scrolling

修改

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

答案 1 :(得分:3)

发现这个(可怕但令人惊讶的)解决方法,它在iOS 6.0中适用于我:

https://gist.github.com/3755461

答案 2 :(得分:0)

我不完全确定,但您可以使用setTimeout代替setInterval?无论如何,使用setInterval通常都是不好的做法。

var delay = 100;
(function callee() {
    setTimeout(callee, delay);
})();

答案 3 :(得分:0)

iOS6 Safari遭受了一个错误,该错误会导致页面滚动时创建的计时器。

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

https://gist.github.com/3798925