Kontekst: Przeprowadzam testy interfejsu użytkownika, które muszą wykryć, czy ludzie zwracają na to uwagę, czy nie. Ale to pytanie nie dotyczy interfejsu API widoczności strony .
W szczególności chciałbym wiedzieć, jak wpłynie to na mój kod JavaScript, jeśli bieżąca karta nie jest aktywna lub okno przeglądarki nie jest aktywne w różnych przeglądarkach. Do tej pory wykopałem:
- ios 5 zatrzymuje javascript, gdy karta nie jest aktywna
setIntervalasetTimeoutopóźnienie jest zmniejszone, gdy zakładki nie są aktywne - wydaje się, że to właśnie zaczęło się pojawiać niedawno i może zepsuć testy jednostkowe Jasmine, wokół innych rzeczy.requestAnimationFramejest spowolniony, gdy karta nie jest aktywna (rozsądne, nie mogę sobie wyobrazić, dlaczego miałoby to na kogokolwiek zbyt duży wpływ)
Mam następujące pytania:
- Czy inne niż przeglądarki mobilne przeglądarki komputerowe wstrzymują wykonywanie JS, gdy karta nie jest aktywna? Kiedy i jakie przeglądarki?
- Które przeglądarki zmniejszają liczbę
setIntervalpowtórzeń? Czy to tylko ograniczenie, czy procent? Na przykład, jeśli mam powtórzenie 10 ms w porównaniu z powtórzeniem 5000 ms, jak to wpłynie na każdy z nich? - Czy te zmiany zachodzą, gdy okno jest nieostre, a nie tylko karta? (Wyobrażam sobie, że byłoby to trudniejsze do wykrycia, ponieważ wymaga interfejsu API systemu operacyjnego).
- Czy są jakieś inne efekty, których nie byłoby widać na aktywnej karcie? Czy mogliby zepsuć rzeczy, które w przeciwnym razie działałyby poprawnie (tj. Wspomniane wyżej testy Jasmine)?
setInterval/ setTimeoutczasy poniżej 1000 ms są zmieniane na 1000 ms, gdy karta / okno jest rozmyte
setInterval/ setTimeoutczasy poniżej 1000 ms są zmieniane na 1000 ms, gdy karta / okno jest rozmyte. Nie jest jasne, co próbowałeś przekazać