в iOS 6 в Safari и setInterval не уволят

Кажется, если я прокрутки window, the window.setInterval не подключается / запускается во время прокрутки или после. кто-нибудь еще видел ту же проблему?

Я имею в виду...

  • что может быть наносят это?
  • что я могу сделать, чтобы это исправить?

4 ответов


iOS останавливает почти все в ответ на прикосновение пользователя, чтобы гарантировать, что он чувствует себя отзывчивым. Проблема setInterval известна, и, похоже, нет обходного пути.

setInterval делает паузу в iphone / ipad (mobile Safari) во время прокрутки

редактировать

во время" замораживания " таймер не догонит, как только пользователь отпустит экран. Пропущенные события не откладываются, а полностью теряются (ошибка).


нашел этот (страшный, но удивительный) обходной путь, и он работает для меня в iOS 6.0:

https://gist.github.com/3755461


Я не совсем уверен, но вы могли бы использовать setTimeout вместо setInterval? В любом случае, использовать setInterval-плохая практика.

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

iOS6 Safari страдает от ошибки, которая убивает таймеры, созданные во время прокрутки страницы.

существует исправление этой проблемы, предоставленное kTmnh путем воссоздания таймеров после прокрутки

https://gist.github.com/3798925.