Aplikacja, którą tworzę, jest zbudowana wokół jQuery Mobile i jakiegoś Ajaxa w celu odświeżenia części strony. Podobnie jak witryny korzystające z automatycznego odświeżania, chcę zatrzymać odświeżanie po pewnych warunkach (time/visibility/etc.), Więc mój serwer nie jest bombardowany niepotrzebnymi żądaniami. Aplikacja ma ekran stanu, który jest często sprawdzany przez użytkownika, a najlepiej, aby moje skrypty wiedziały, że okno przeglądarki stało się ostrzejsze i nadszedł czas na odświeżenie. Robiłem to już wcześniej w stacjonarnych webapps, ale ja widząc wiele wariacji na mobilnej stronie pomiędzy różnymi platformami i przeglądarek, na przykład:Jak wykrywać fokus przeglądarki na urządzeniach mobilnych?
- window.onfocus() ma/nie ogień, gdy zyski przeglądarka skupić
- window.onfocus() ma/nie ognia, gdy karty są włączone w przeglądarce
- Javascript jest/nie jest zawieszony pomiędzy przełącznikami zawleczki i/lub przełączniki od przeglądarce
Najlepsze, co udało mi się zrobić do tej pory, to zestaw heurystyk, które oglądają dostępne wydarzenia + kiedy było interakcja użytkownika ze stroną, ale jest niezgrabna i skutkuje przypadkami, w których użytkownik wraca na stronę i musi ręcznie odświeżyć. Nie najlepiej.
Jakieś sprytne techniki rozwiązania tego problemu?
Alternatywnym rozwiązaniem może być sprawdzenie danych wprowadzanych przez użytkownika. A może ustawisz bieżący czas w zmiennej za każdym razem, gdy użytkownik wejdzie w interakcję ze stroną. W ten sposób możesz stworzyć regułę, która wyzwala wywołanie ajax, jeśli strona była używana przez ostatnią minutę lub dwie. –
Obecnie robię to. Pomaga, ale w mojej aplikacji jest przypadek, w którym użytkownik po prostu przełącza się na stronę internetową lub odblokowuje swój telefon, aby sprawdzić status (nie wymaga interakcji). – LVB