Ich möchte überprüfen, wann jemand versucht, eine Seite zu aktualisieren.
Wenn ich beispielsweise eine Seite öffne, passiert nichts, aber wenn ich die Seite aktualisiere, sollte eine Warnung angezeigt werden.
javascript
page-refresh
Ahmed
quelle
quelle
window.performance.navigation.type
ist veraltet, bitte sehen Sie meine Antwort .Antworten:
⚠️⚠️⚠️
window.performance.navigation.type
ist veraltet, bitte sehen Sie die Antwort von Илья ьеленькоEine bessere Möglichkeit, um festzustellen, dass die Seite tatsächlich neu geladen wird, besteht darin, das Navigatorobjekt zu verwenden, das von den meisten modernen Browsern unterstützt wird.
Es verwendet die Navigation Timing API .
Quelle: https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API
quelle
performance.navigation.type == performance.navigation.TYPE_RELOAD
ist leichter zu lesen als== 1
. Auch, wenn Sie überprüfen ,performance.navigation
werden Sie feststellen , dass es 4 diffrent Navigationstypen wieTYPE_BACK_FORWARD
,TYPE_NAVIGATE
window.performance.navigation.type
ist veraltet, bitte sehen Sie meine Antwort .Der erste Schritt besteht darin,
sessionStorage
nach einem vordefinierten Wert zu suchen und festzustellen, ob ein Alarmbenutzer vorhanden ist:Der zweite Schritt besteht darin
sessionStorage
, einen Wert festzulegen (zum Beispieltrue
):Sitzungswerte bleiben erhalten, bis die Seite geschlossen wird, sodass sie nur funktioniert, wenn die Seite in einer neuen Registerkarte mit der Site neu geladen wird. Auf die gleiche Weise können Sie auch die Anzahl der Nachladevorgänge beibehalten.
quelle
true
wird in konvertiert"true"
. 2). Der Sitzungsspeicher bleibt bestehen, bis der Benutzer das Browserfenster schließt, sodass Sie den Unterschied zwischen dem erneuten Laden der Seite und dem Navigieren von und zurück zu Ihrer Site innerhalb derselben Browsersitzung nicht erkennen können.Neuer Standard ab 2018 (PerformanceNavigationTiming)
window.performance.navigation
Die Eigenschaft ist in der Spezifikation Navigation Timing Level 2 veraltet . Bitte benutzen Sie stattdessen die Schnittstelle.PerformanceNavigationTiming
PerformanceNavigationTiming.type
Dies ist eine experimentelle Technologie .
Überprüfen Sie die Browserkompatibilitätstabelle sorgfältig, bevor Sie sie in der Produktion verwenden.
Unterstützung am 08.07.2019
Die schreibgeschützte Eigenschaft type gibt eine Zeichenfolge zurück, die den Navigationstyp darstellt. Der Wert muss einer der folgenden sein:
navigieren - Die Navigation wird gestartet, indem Sie auf einen Link klicken, die URL in die Adressleiste des Browsers eingeben, das Formular senden oder über eine andere Skriptoperation als reload und back_forward initialisieren, wie unten aufgeführt.
reload - Die Navigation erfolgt über den Reload-Vorgang des Browsers oder
location.reload()
.back_forward - Die Navigation erfolgt über den Verlaufsdurchlauf des Browsers.
Prerender - Die Navigation wird durch einen Prerender-Hinweis eingeleitet .
Diese Eigenschaft ist schreibgeschützt.
Das folgende Beispiel veranschaulicht die Verwendung dieser Eigenschaft.
quelle
Speichern Sie ein Cookie, wenn jemand die Seite zum ersten Mal besucht. Überprüfen Sie beim Aktualisieren, ob Ihr Cookie vorhanden ist, und benachrichtigen Sie ihn, falls dies der Fall ist.
und in Ihrem Körper-Tag:
quelle
wenn
kehrt zurück
0 => Benutzer hat gerade eine URL eingegeben
1 => Seite neu geladen
2 => Zurück geklickt.
quelle
performance.navigation.type
ist veraltet, bitte sehen Sie meine Antwort .Ich habe hier einige Informationen gefunden. Javascript Detecting Page Refresh . Seine erste Empfehlung ist die Verwendung versteckter Felder, die in der Regel durch Seitenaktualisierungen gespeichert werden.
quelle
Referer
Eigenschaft überprüfen und die Serverantwort auf der Grundlage dieser Eigenschaft ändern<script>
Element nach unten zu verschieben würde funktionieren - aber es ist immer noch keine garantierte Lösung (und die Cookie-Methode auch nicht).Referer
ist auch nicht zuverlässig; Viele Proxys und Browsererweiterungen entfernen Anforderungen.Ich habe diese Funktion geschrieben, um beide Methoden gleichzeitig mit alt
window.performance.navigation
und neu zu überprüfenperformance.getEntriesByType("navigation")
:Ergebnisbeschreibung:
0: Klicken auf einen Link, Eingeben der URL in die Adressleiste des Browsers, Senden des Formulars, Klicken auf Lesezeichen, Initialisieren durch eine Skriptoperation.
1: Klicken Sie auf die Schaltfläche Neu laden oder verwenden Sie
Location.reload()
2: Arbeiten mit dem Browserverlauf (Bakc und Forward).
3: Vorrendering-Aktivität wie
<link rel="prerender" href="https://example.com/next-page.html">
4: jede andere Methode.
quelle
Ich habe hier einige Informationen gefunden. Javascript Detecting Page Refresh
quelle
quelle