Столкнулся с ранее неизвестной мне проблемой работы jquery.fadeIn() и fadeOut() в свернутой вкладке.
Ситуация следующая: смена баннеров на сайте производится раз в 5 секунд, посредством setTimeout().
Баннеры сменяют друг друга посредством fadeOut() текущего и одновременного с ним fadeIn() следующего. При этом также подсвечиваются switcher'ы c номерами баннеров посредством простой смены класса соответствующего <span>.
Если свернуть вкладку на 2-3 минуты, а потом открыть, то баннеры будут лихорадочно сменять друг друга один за одним (такое ощущение, что jquery поскладывала все сработавшие от таймера вызовы fade-функций в очередь, пока вкладка была свёрнута, и запустила всю очередь при её активизации).
Как с этим бороться? Как заставить графические fadein/fadeout-процессы работать в теневом/фоновом режиме?
Because of the nature of requestAnimationFrame(), you should never queue animations using a setInterval or setTimeout loop. In order to preserve CPU resources, browsers that support requestAnimationFrame will not update animations when the window/tab is not displayed. If you continue to queue animations via setInterval or setTimeout while animation is paused, all of the queued animations will begin playing when the window/tab regains focus. To avoid this potential problem, use the callback of your last animation in the loop, or append a function to the elements .queue() to set the timeout to start the next animation.
Иногда полезно читать доку. (коммент к статье про .animate()