Jak mogę automatycznie ponownie załadować stronę internetową, jeśli przez określony czas nie było na niej żadnej aktywności?
javascript
ajax
Umar Adil
źródło
źródło
Odpowiedzi:
Jeśli chcesz odświeżyć stronę, jeśli nie ma żadnej aktywności, musisz dowiedzieć się, jak zdefiniować aktywność. Powiedzmy, że odświeżamy stronę co minutę, chyba że ktoś naciśnie klawisz lub poruszy myszą. To używa jQuery do wiązania zdarzeń:
źródło
Można to zrobić bez javascript, za pomocą tego metatagu:
gdzie content = „5” to sekundy, przez które strona będzie czekać do odświeżenia.
Ale powiedziałeś tylko, że gdyby nie było żadnej aktywności, jakiego rodzaju byłaby to działalność?
źródło
setInterval
, więc cieszę się, że to istnieje!Zbudowałem również kompletne rozwiązanie javascript, które nie wymaga jquery. Może uda się przekształcić go we wtyczkę. Używam go do automatycznego odświeżania płynu, ale wygląda na to, że może ci pomóc.
JSFiddle AutoRefresh
źródło
Powyższe będzie odświeżać stronę co 10 minut, chyba że zostanie wywołana funkcja resetTimeout (). Na przykład:
źródło
Na podstawie zaakceptowanej odpowiedzi arturnt. Jest to nieco zoptymalizowana wersja, ale zasadniczo robi to samo:
Jedyną różnicą jest to, że ta wersja używa
setInterval
zamiastsetTimeout
, co sprawia, że kod jest bardziej zwarty.źródło
1000
jeśli oblicza za pomocą60000
?Za każdym razem, gdy poruszasz myszą, sprawdzane jest, kiedy ostatnio poruszałeś myszą. Jeśli przedział czasu jest większy niż 20 minut, strona zostanie ponownie załadowana, w przeciwnym razie odnowi ostatni raz, gdy przesunąłeś mysz.
źródło
Automatycznie przeładuj wybrany cel. W tym przypadku cel jest
_self
ustawiony na siebie, ale możesz zmienić stronę ponownego ładowania, po prostu zmieniającwindow.open('self.location', '_self');
kod na podobny do tego przykładuwindow.top.location="window.open('http://www.YourPageAdress.com', '_self'";
.Z potwierdzeniem Komunikat ALERT:
Bez alertu potwierdzającego:
Kod ciała jest taki sam dla obu rozwiązań:
źródło
użyj
setInterval
metody JavaScript :źródło
źródło
Zastanowiłbym
activity
się, czy użytkownik koncentruje się na oknie. Na przykład, gdy klikniesz z jednego okna do drugiego (np. Google Chrome do iTunes lub Tab 1 do Tab 2 w przeglądarce internetowej), strona internetowa może wysłać wywołanie zwrotne o treści „Jestem nieostry!” lub „Jestem w centrum uwagi!”. Można by użyć jQuery, aby wykorzystać ten możliwy brak aktywności do robienia wszystkiego, co chcieli. Gdybym był na twoim miejscu, użyłbym następującego kodu do sprawdzania fokusu co 5 sekund itp. I ponownego ładowania, jeśli nie ma fokusa.źródło
I wreszcie najprostsze rozwiązanie:
Z potwierdzeniem alertu:
Bez potwierdzenia ostrzeżenia:
Kod ciała jest taki sam dla obu rozwiązań
źródło
Zawiera tekst potwierdzenia na stronie zamiast alertu
Ponieważ jest to kolejna metoda automatycznego ładowania, jeśli jest nieaktywna, daję jej drugą odpowiedź. Ten jest prostszy i łatwiejszy do zrozumienia.
Z potwierdzeniem ponownego załadowania na stronie
Pole potwierdzenia podczas używania z potwierdzeniem na stronie
Kody treści dla obu są TAKIE SAME
UWAGA: Jeśli nie chcesz, aby potwierdzenie na stronie było wyświetlane, użyj opcji Bez potwierdzenia
źródło
Używając LocalStorage do śledzenia ostatniego czasu aktywności, możemy napisać funkcję przeładowania w następujący sposób
Następnie tworzymy funkcję strzałkową, która zapisuje ostatni czas interakcji w milisekundach (String)
Będziemy musieli odsłuchać
beforeunload
zdarzenie w przeglądarce, aby wyczyścić naszlastinteraction
rekord, aby nie utknąć w nieskończonej pętli przeładowania.Zdarzenia aktywności użytkowników, które będziemy musieli monitorować, to
mousemove
ikeypress
. Przechowujemy czas ostatniej interakcji, kiedy użytkownik poruszy myszką lub naciśnie klawisz na klawiaturzeAby ustawić naszego końcowego słuchacza, użyjemy
load
zdarzenia. Podczas ładowania strony używamy tejsetInterval
funkcji, aby sprawdzić, czy strona wygasła po określonym czasie.źródło
To zadanie jest bardzo łatwe w użyciu po kodzie w sekcji nagłówka html
Odświeży Twoją stronę po 30 sekundach.
źródło