Chrome (and apparently the latest versions of Firefox too) reduce the speed of setInterval
when the tab is in the background to improve foreground performance. This probably matters the most when there are fast running timer-driven animations in background pages. When the page comes back to the foreground, it “tries” to catch up and runs a bunch of setInterval
calls much faster than they would normally run.
The work-arounds are:
- Lengthen the time of the
setInterval
so Chrome won’t mess with it (you’d have to look up what that time is). - Stop your interval timer when the page goes in the background (no need to run slides when it’s not visible anyway) – then start it up again when the page comes to the foreground.
- Use repeated
setTimeout
instead ofsetInterval
with some type of repeated setTimeout like this:
Code:
function nextSlide() {
// show next slide now
// set timer for the slide after this one
setTimeout(function() {
nextSlide(); // repeat
}, xxx)
}
Similar post here.