Последние версии Chrome, очевидно, замедляют работу setInterval, когда страница с вкладками находится в фоновом режиме, а затем, когда вы перемещаете эту страницу вперед, она пытается наверстать упущенное.
В блоге Chromium Google сказал:
В следующем выпуске Chrome 11 мы планируем сократить потребление ресурсов процессора даже для страниц, использующих setTimeout и setInterval.Для фоновых вкладок мы намерены запускать каждый независимый таймер не чаще одного раза в секунду.Это изменение уже реализовано в канале Chrome dev и сборках канареек.
Ваш интервал составляет 3,5 секунды, но сама анимация может использовать гораздо более короткие таймеры.
Возможные способы обойти это:
- СтопВаш таймер / анимация, когда окно не видно.Перезапустите таймер / анимацию, когда окно станет видимым.
- Вместо setInterval используйте setTimeout, а затем просто сбрасывайте setTimeout каждый раз, когда он запускается, чтобы создать свой собственный повторяющийся интервал - хотя в вашем случае это может быть использование jQueryтаймеров, которые являются проблемой - я не знаю.
- Замедлите свои таймеры, чтобы они не запутались в этом (опять же, возможно, это изнутри jQuery, а не ваши собственные таймеры).
Лучшим вариантом, вероятно, будет выяснить, когда просто остановить, а затем перезапустить анимацию.
Аналогичный вопрос здесь: Chrome: время ожидания / интервал приостановлен на вкладках фона? .
К вашему сведению, Chrome имеет новый экспериментальный API для определения видимости страницы именно по этой причине.Вы можете прочитать об этом здесь: http://code.google.com/chrome/whitepapers/pagevisibility.html. это помогает решить проблему, когда ваша страница видна, но не имеет фокуса.