Pausa setInterval cuando la página / navegador está desenfocado

Tengo una presentación de diapositivas simple que hice en la página de inicio de un cliente, usando setInterval para cronometrar las rotaciones.

Para evitar que los navegadores arruinen setInterval cuando la página no está enfocada (se está viendo otra pestaña u otro programa), estoy usando:

function onBlur() {
            clearInterval(play);
        };

        function onFocus() {

            mySlideRotateFunction();

        };

        if (/*@cc_on!@*/false) { 
            document.onfocusin = onFocus;
            document.onfocusout = onBlur;
        } else {
            window.onfocus = onFocus;
            window.onblur = onBlur;
        }

Where mySlideRotateFunction establece setInterval y ejecuta algunos jQuery. Si bien esto funciona la mayoría de las veces, encuentro que, en ocasiones, parece que onBlur no se ha ejecutado, y cuando regreso a la página los tiempos se han "acumulado" y las rotaciones se vuelven locas.

No puedo determinar la causa de por qué sucede esto en ocasiones, y no en otros.

Mi pregunta: ¿hay algún problema con mi código, y alguien tiene una mejor sugerencia para 'pausar' setInterval cuando la ventana del navegador está desenfocada?

Gracia

Respuestas a la pregunta(2)

Su respuesta a la pregunta