Sfondo: sto facendo alcuni test dell'interfaccia utente che devono rilevare se le persone prestano attenzione o meno. Ma questa domanda non riguarda l'API di visibilità della pagina .
In particolare, vorrei sapere come sarà influenzato il mio codice Javascript se la scheda corrente non è attiva, o la finestra del browser non è attiva, in diversi browser. Finora ho scoperto quanto segue:
- iOS 5 mette in pausa JavaScript quando la scheda non è attiva
setInterval
e ilsetTimeout
ritardo si riduce quando le schede non sono attive - sembra che questo sia appena iniziato a comparire di recente e possa rovinare i test unitari di Jasmine, in altre cose.requestAnimationFrame
è rallentato quando la scheda non è attiva (ragionevole, non riesco a pensare al motivo per cui ciò influirebbe troppo su qualcuno)
Ho le seguenti domande:
- Oltre ai browser mobili, i browser desktop mettono mai in pausa l'esecuzione di JS quando una scheda non è attiva? Quando e quali browser?
- Quali browser ridurre la
setInterval
ripetizione? È solo ridotto a un limite o in percentuale? Ad esempio, se ho una ripetizione di 10 ms rispetto a una ripetizione di 5000ms, in che modo saranno interessati? - Queste modifiche si verificano se la finestra non è a fuoco, anziché solo la scheda? (Immagino che sarebbe più difficile da rilevare, in quanto richiede l'API del sistema operativo.)
- Ci sono altri effetti che non verrebbero osservati in una scheda attiva? Potrebbero rovinare cose che altrimenti verrebbero eseguite correttamente (cioè i test di Jasmine sopra menzionati)?
setInterval
/ setTimeout
volte sotto i 1000 ms vengono cambiati in 1000 ms quando la scheda / finestra è sfocata
setInterval
/ i setTimeout
tempi inferiori a 1000ms vengono cambiati in 1000ms quando la scheda / finestra è sfocata. Non è chiaro cosa hai cercato di comunicare