Antecedentes: estoy haciendo algunas pruebas de interfaz de usuario que necesitan detectar si las personas están prestando atención o no. Pero, esta pregunta no se trata de la API de visibilidad de la página .
Específicamente, me gustaría saber cómo se verá afectado mi código Javascript si la pestaña actual no está activa, o la ventana del navegador no está activa, en diferentes navegadores. He desenterrado lo siguiente hasta ahora:
- ios 5 pausa javascript cuando la pestaña no está activa
setInterval
y elsetTimeout
retraso se reduce cuando las pestañas no están activas ; parece que esto acaba de comenzar a aparecer recientemente y puede estropear las pruebas unitarias de Jasmine, en torno a otras cosas.requestAnimationFrame
se ralentiza cuando la pestaña no está activa (razonable, no puedo pensar por qué esto afectaría demasiado a alguien)
Tengo las siguientes preguntas:
- Además de los navegadores móviles, ¿los navegadores de escritorio pausan la ejecución de JS cuando una pestaña no está activa? ¿Cuándo y qué navegadores?
- ¿Qué navegadores reducen la
setInterval
repetición? ¿Se reduce a un límite o en un porcentaje? Por ejemplo, si tengo una repetición de 10 ms frente a una repetición de 5000 ms, ¿cómo se verá afectado cada uno? - ¿Se producen estos cambios si la ventana está desenfocada, en lugar de solo la pestaña? (Me imagino que sería más difícil de detectar, ya que requiere la API del sistema operativo).
- ¿Hay otros efectos que no se observarían en una pestaña activa? ¿Podrían estropear cosas que de otro modo se ejecutarían correctamente (es decir, las pruebas de Jasmine mencionadas anteriormente)?
setInterval
/ setTimeout
veces por debajo de 1000 ms se cambian a 1000 ms cuando la pestaña / ventana está borrosa
setInterval
/ setTimeout
times under 1000ms se cambian a 1000ms cuando la pestaña / ventana está borrosa. No está claro lo que ha intentado transmitir