Hintergrund: Ich mache einige Benutzeroberflächentests, bei denen festgestellt werden muss, ob die Leute aufpassen oder nicht. Bei dieser Frage geht es jedoch nicht um die API für die Sichtbarkeit von Seiten .
Insbesondere möchte ich wissen, wie mein Javascript-Code beeinflusst wird, wenn die aktuelle Registerkarte in verschiedenen Browsern nicht aktiv ist oder das Browserfenster nicht aktiv ist. Bisher habe ich Folgendes ausgegraben:
- ios 5 pausiert Javascript, wenn die Registerkarte nicht aktiv ist
setInterval
und diesetTimeout
Verzögerung wird reduziert, wenn die Registerkarten nicht aktiv sind - anscheinend erscheint dies erst seit kurzem und kann Jasmine-Komponententests unter anderem durcheinander bringen.requestAnimationFrame
wird verlangsamt, wenn der Tab nicht aktiv ist (vernünftig, ich kann mir nicht vorstellen, warum dies jemanden zu sehr betreffen würde)
Ich habe folgende Fragen:
- Unterbrechen Desktop-Browser im Gegensatz zu mobilen Browsern jemals die JS-Ausführung, wenn eine Registerkarte nicht aktiv ist? Wann und welche Browser?
- Welche Browser reduzieren die
setInterval
Wiederholung? Ist es nur auf ein Limit oder um einen Prozentsatz reduziert? Wenn ich zum Beispiel eine Wiederholung von 10 ms gegenüber einer Wiederholung von 5000 ms habe, wie wird jede davon betroffen sein? - Treten diese Änderungen auf, wenn das Fenster unscharf ist und nicht nur die Registerkarte? (Ich stelle mir vor, es wäre schwieriger zu erkennen, da die OS-API erforderlich ist.)
- Gibt es andere Effekte, die in einem aktiven Tab nicht beobachtet werden würden? Könnten sie Dinge durcheinander bringen, die sonst korrekt ausgeführt würden (dh die oben genannten Jasmin-Tests)?
setInterval
/ setTimeout
Zeiten unter 1000 ms in 1000 ms geändert werden, wenn die Registerkarte / das Fenster verschwommen ist
setInterval
/ setTimeout
times under 1000ms werden in 1000ms geändert, wenn die Registerkarte / das Fenster unscharf ist. Nicht klar, was Sie zu vermitteln versucht haben