Chcę sprawdzić, czy ktoś próbuje odświeżyć stronę.
Na przykład po otwarciu strony nic się nie dzieje, ale po odświeżeniu strony powinien zostać wyświetlony alert.
javascript
page-refresh
Ahmed
źródło
źródło
window.performance.navigation.type
jest przestarzałe, proszę zobaczyć moją odpowiedź .Odpowiedzi:
⚠️⚠️⚠️
window.performance.navigation.type
jest przestarzałe, proszę zobaczyć odpowiedź Илья ЗеленькоLepszym sposobem, aby wiedzieć, że strona została ponownie załadowana, jest użycie obiektu nawigatora obsługiwanego przez większość współczesnych przeglądarek.
Korzysta z interfejsu API synchronizacji nawigacji .
źródło: https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API
źródło
performance.navigation.type == performance.navigation.TYPE_RELOAD
jest łatwiejszy do odczytania zamiast== 1
. Ponadto, jeśli sprawdziszperformance.navigation
, zauważysz, że istnieją 4 różne typy nawigacji, takie jakTYPE_BACK_FORWARD
:TYPE_NAVIGATE
window.performance.navigation.type
jest przestarzałe, proszę zobaczyć moją odpowiedź .Pierwszym krokiem jest sprawdzenie,
sessionStorage
czy istnieje pewna wstępnie zdefiniowana wartość i czy istnieje alarm użytkownika:Drugim krokiem jest ustawienie
sessionStorage
pewnej wartości (na przykładtrue
):Wartości sesji są przechowywane do momentu zamknięcia strony, więc będzie działać tylko wtedy, gdy strona zostanie ponownie załadowana w nowej karcie z witryną. Możesz także zachować liczbę przeładowań w ten sam sposób.
źródło
true
jest konwertowany na"true"
. 2). Pamięć sesji jest utrzymywana, dopóki użytkownik nie zamknie okna przeglądarki, więc nie można odróżnić przeładowywania strony od opuszczania witryny i powrotu do niej w tej samej sesji przeglądarki.Nowy standard 2018-teraz (PerformanceNavigationTiming)
window.performance.navigation
właściwość jest nieaktualna w specyfikacji poziomu synchronizacji poziomu 2 .PerformanceNavigationTiming
Zamiast tego użyj interfejsu.PerformanceNavigationTiming.type
To jest technologia eksperymentalna .
Sprawdź dokładnie tabelę zgodności przeglądarki przed użyciem jej w produkcji.
Wsparcie w dniu 08.07.2019
Właściwość typu tylko do odczytu zwraca ciąg znaków reprezentujący typ nawigacji. Wartość musi być jedną z następujących czynności:
nawiguj - nawigacja rozpoczęła się od kliknięcia linku, wpisania adresu URL w pasku adresu przeglądarki, przesłania formularza lub zainicjowania operacji skryptu innej niż przeładowanie i powrót do poprzedniej wersji, jak podano poniżej.
reload - Nawigacja odbywa się poprzez operację przeładowania przeglądarki lub
location.reload()
.back_forward - Nawigacja odbywa się poprzez przeglądanie historii przeglądarki.
prerender - Nawigacja jest inicjowana przez wskazówkę dotyczącą prerendera .
Ta właściwość jest tylko do odczytu.
Poniższy przykład ilustruje użycie tej właściwości.
źródło
Przechowuj plik cookie przy pierwszej wizycie na stronie. Po odświeżeniu sprawdź, czy plik cookie istnieje, a jeśli tak, powiadom alert.
i na twoim ciele tag:
źródło
Jeśli
zwroty
0 => użytkownik właśnie wpisał adres URL
1 => strona została ponownie załadowana
2 => kliknięty przycisk Wstecz.
źródło
performance.navigation.type
jest przestarzałe, proszę zobaczyć moją odpowiedź .Znalazłem tu trochę informacji Odśwież stronę z wykrywaniem Javascript . Jego pierwszą rekomendacją jest użycie ukrytych pól, które zwykle są przechowywane przez odświeżanie strony.
źródło
Referer
właściwość i modyfikując odpowiedź serwera na podstawie tej właściwości<script>
elementu na dół działałoby - ale nadal nie jest to gwarantowane rozwiązanie (podobnie jak metoda cookie).Referer
nie jest wiarygodne; wiele serwerów proxy i rozszerzeń przeglądarki usuwa je z żądań.Napisałem tę funkcję, aby sprawdzić obie metody jednocześnie za pomocą starej
window.performance.navigation
i nowejperformance.getEntriesByType("navigation")
:Opis wyniku:
0: kliknięcie linku, wprowadzenie adresu URL w pasku adresu przeglądarki, przesłanie formularza, kliknięcie zakładki, zainicjowanie za pomocą operacji skryptu.
1: Kliknięcie przycisku Załaduj ponownie lub użycie
Location.reload()
2: Praca z historią przeglądania (Bakc i Forward).
3: działanie prerenderujące, takie jak
<link rel="prerender" href="https://example.com/next-page.html">
4: dowolna inna metoda.
źródło
Znalazłem tu trochę informacji Odśwież stronę z wykrywaniem Javascript
źródło
źródło