Contexte: je fais des tests d'interface utilisateur qui doivent détecter si les gens font attention ou non. Mais cette question ne concerne pas l'API de visibilité de page .
Plus précisément, j'aimerais savoir comment mon code Javascript sera affecté si l'onglet actuel n'est pas actif, ou si la fenêtre du navigateur n'est pas active, dans différents navigateurs. J'ai découvert ce qui suit jusqu'à présent:
- ios 5 met javascript en pause lorsque l'onglet n'est pas actif
setInterval
et lesetTimeout
délai est réduit lorsque les onglets ne sont pas actifs - il semble que cela vient de commencer à apparaître récemment et peut gâcher les tests unitaires de Jasmine, autour d'autres choses.requestAnimationFrame
est ralenti lorsque l'onglet n'est pas actif (raisonnable, je ne vois pas pourquoi cela affecterait trop quelqu'un)
J'ai les questions suivantes:
- À part les navigateurs mobiles, les navigateurs de bureau mettent-ils en pause l'exécution de JS lorsqu'un onglet n'est pas actif? Quand et quels navigateurs?
- Quels navigateurs réduisent la
setInterval
répétition? Est-il simplement réduit à une limite ou à un pourcentage? Par exemple, si j'ai une répétition de 10 ms par rapport à une répétition de 5000 ms, comment chacun sera-t-il affecté? - Ces changements se produisent-ils si la fenêtre est floue, par opposition à l'onglet uniquement? (J'imagine que ce serait plus difficile à détecter, car cela nécessite l'API du système d'exploitation.)
- Y a-t-il d'autres effets qui ne seraient pas observés dans un onglet actif? Pourraient-ils gâcher des choses qui autrement s'exécuteraient correctement (c'est-à-dire les tests Jasmine susmentionnés)?
setInterval
/ setTimeout
times sous 1000ms sont changés en 1000ms lorsque l'onglet / la fenêtre est floue
setInterval
/ setTimeout
fois sous 1000ms sont changés en 1000ms lorsque l'onglet / la fenêtre est floue. Pas clair ce que vous avez essayé de transmettre