Wie kann ich eine Webseite automatisch neu laden, wenn auf der Seite für einen bestimmten Zeitraum keine Aktivität stattgefunden hat?
javascript
ajax
Umar Adil
quelle
quelle
Antworten:
Wenn Sie die Seite aktualisieren möchten, wenn keine Aktivität vorhanden ist, müssen Sie herausfinden, wie die Aktivität definiert wird. Angenommen, wir aktualisieren die Seite jede Minute, es sei denn, jemand drückt eine Taste oder bewegt die Maus. Dies verwendet jQuery für die Ereignisbindung:
quelle
Dies kann mit diesem Metatag ohne Javascript erreicht werden:
Dabei ist content = "5" die Sekunde, die die Seite wartet, bis sie aktualisiert wird.
Aber Sie sagten nur, wenn es keine Aktivität gäbe, welche Art von Aktivität wäre das?
quelle
setInterval
, das müsste getan werden , so froh zu wissen, dass es das gibt!Ich habe auch eine vollständige Javascript-Lösung erstellt, für die keine Abfrage erforderlich ist. Könnte es in ein Plugin verwandeln können. Ich benutze es für die automatische Flüssigkeitsauffrischung, aber es sieht so aus, als könnte es Ihnen hier helfen.
JSFiddle AutoRefresh
quelle
Oben wird die Seite alle 10 Minuten aktualisiert, sofern nicht resetTimeout () aufgerufen wird. Beispielsweise:
quelle
Basierend auf der akzeptierten Antwort von arturnt. Dies ist eine leicht optimierte Version, macht aber im Wesentlichen dasselbe:
Der einzige Unterschied besteht darin, dass diese Version
setInterval
anstelle von verwendet wirdsetTimeout
, wodurch der Code kompakter wird.quelle
1000
wenn es mit berechnet wird60000
?Jedes Mal, wenn Sie die Maus bewegen, wird überprüft, wann Sie die Maus zuletzt bewegt haben. Wenn das Zeitintervall größer als 20 Minuten ist, wird die Seite neu geladen, andernfalls wird das letzte Mal erneuert, wenn Sie die Maus bewegt haben.
quelle
Automatisches Neuladen mit einem Ziel Ihrer Wahl. In diesem Fall ist das Ziel
_self
auf sich selbst festgelegt. Sie können die Seite zum erneuten Laden jedoch ändern, indem Sie einfach denwindow.open('self.location', '_self');
Code in ein Beispiel wie dieses ändernwindow.top.location="window.open('http://www.YourPageAdress.com', '_self'";
.Mit einer Bestätigungsmeldung ALERT:
Ohne Bestätigungsalarm:
Der Body-Code ist für beide Lösungen gleich:
quelle
Verwenden Sie die JavaScript-
setInterval
Methode:quelle
quelle
Ich würde überlegen
activity
, ob sich der Benutzer auf das Fenster konzentriert oder nicht. Wenn Sie beispielsweise von einem Fenster in ein anderes klicken (z. B. Google Chrome zu iTunes oder Tab 1 zu Tab 2 in einem Internetbrowser), kann die Webseite einen Rückruf mit der Meldung "Ich bin unscharf!" Senden. oder "Ich bin im Fokus!". Man könnte jQuery verwenden, um diesen möglichen Mangel an Aktivität zu nutzen, um zu tun, was sie wollten. Wenn ich in Ihrer Position wäre, würde ich den folgenden Code verwenden, um alle 5 Sekunden usw. nach dem Fokus zu suchen und neu zu laden, wenn kein Fokus vorhanden ist.quelle
Und schließlich die einfachste Lösung:
Mit Alarmbestätigung:
Ohne Alarmbestätigung:
Der Body-Code ist für beide Lösungen gleich
quelle
Mit Bestätigungstext auf der Seite anstelle einer Warnung
Da dies eine andere Methode zum automatischen Laden ist, wenn sie inaktiv ist, gebe ich eine zweite Antwort. Dieser ist einfacher und leichter zu verstehen.
Mit Reload-Bestätigung auf der Seite
Bestätigungsfeld bei Verwendung mit On-Page-Bestätigung
Body Codes für beide sind die gleichen
HINWEIS: Wenn Sie keine Bestätigung auf der Seite wünschen, verwenden Sie Ohne Bestätigung
quelle
Mit LocalStorage, um den letzten Zeitpunkt der Aktivität zu verfolgen, können wir die Reload-Funktion wie folgt schreiben
Dann erstellen wir eine Pfeilfunktion, die die letzte Zeit der Interaktion in Millisekunden speichert (String)
Wir müssen das
beforeunload
Ereignis im Browser anhören, um unserenlastinteraction
Datensatz zu löschen , damit wir nicht in einer Endlos-Neuladeschleife stecken bleiben.Die Benutzeraktivitätsereignisse, die wir überwachen müssen, sind
mousemove
undkeypress
. Wir speichern die letzte Interaktionszeit, wenn der Benutzer die Maus bewegt oder eine Taste auf der Tastatur drücktUm unseren endgültigen Listener einzurichten, werden wir das
load
Ereignis verwenden. Beim Laden der Seite verwenden wir diesetInterval
Funktion, um zu überprüfen, ob die Seite nach einem bestimmten Zeitraum abgelaufen ist.quelle
Diese Aufgabe ist sehr einfach, wenn Sie dem Code im HTML-Header-Abschnitt folgen
Ihre Seite wird nach 30 Sekunden aktualisiert.
quelle