Je veux vérifier quand quelqu'un essaie d'actualiser une page.
Par exemple, lorsque j'ouvre une page, rien ne se passe, mais lorsque j'actualise la page, elle doit afficher une alerte.
javascript
page-refresh
Ahmed
la source
la source
window.performance.navigation.type
est obsolète, veuillez voir ma réponse .Réponses:
⚠️⚠️⚠️
window.performance.navigation.type
est obsolète, veuillez voir la réponse de Илья ЗеленькоUne meilleure façon de savoir que la page est réellement rechargée consiste à utiliser l'objet navigateur pris en charge par la plupart des navigateurs modernes.
Il utilise l' API de synchronisation de navigation .
source: https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API
la source
performance.navigation.type == performance.navigation.TYPE_RELOAD
est plus facile à lire au lieu de== 1
. De plus, si vous vérifiez,performance.navigation
vous constaterez qu'il existe 4 types de navigation différents commeTYPE_BACK_FORWARD
,TYPE_NAVIGATE
window.performance.navigation.type
est obsolète, veuillez voir ma réponse .La première étape consiste à vérifier
sessionStorage
une valeur prédéfinie et si elle existe, alerte l'utilisateur:La deuxième étape consiste à définir
sessionStorage
une valeur (par exempletrue
):Les valeurs de session sont conservées jusqu'à ce que la page soit fermée, donc cela ne fonctionnera que si la page est rechargée dans un nouvel onglet avec le site. Vous pouvez également conserver le nombre de recharges de la même manière.
la source
true
est converti en"true"
. 2). Le stockage de session persiste jusqu'à ce que l'utilisateur ferme la fenêtre du navigateur, vous ne pouvez donc pas faire la différence entre le rechargement de la page et la navigation depuis et vers votre site dans la même session de navigateur.Nouvelle norme 2018-maintenant (PerformanceNavigationTiming)
window.performance.navigation
La propriété est obsolète dans la spécification Navigation Timing Level 2 . Veuillez utiliser l'PerformanceNavigationTiming
interface à la place.PerformanceNavigationTiming.type
C'est une technologie expérimentale .
Vérifiez le tableau de compatibilité du navigateur attentivement le avant de l'utiliser en production.
Support le 08/07/2019
La propriété type en lecture seule renvoie une chaîne représentant le type de navigation. La valeur doit être l'une des suivantes:
naviguer - La navigation a commencé en cliquant sur un lien, en saisissant l'URL dans la barre d'adresse du navigateur, en soumettant un formulaire ou en l'initialisant via une opération de script autre que recharger et back_forward comme indiqué ci-dessous.
recharger - La navigation se fait via l'opération de rechargement du navigateur ou
location.reload()
.back_forward - La navigation s'effectue via l'opération de traversée de l'historique du navigateur.
prerender - La navigation est initiée par un indice de prerender .
Cette propriété est en lecture seule.
L'exemple suivant illustre l'utilisation de cette propriété.
la source
Stockez un cookie la première fois que quelqu'un visite la page. Lors de l'actualisation, vérifiez si votre cookie existe et si c'est le cas, alertez.
et dans votre étiquette corporelle:
la source
si
Retour
0 => l'utilisateur vient de saisir une URL
1 => page rechargée
2 => bouton retour cliqué.
la source
performance.navigation.type
est obsolète, veuillez voir ma réponse .J'ai trouvé quelques informations ici Javascript Detecting la page Actualiser . Sa première recommandation consiste à utiliser des champs cachés, qui ont tendance à être stockés via des actualisations de page.
la source
Referer
propriété et modifier la réponse du serveur sur la base de cette propriété<script>
élément vers le bas fonctionnerait - mais ce n'est toujours pas une solution garantie (et la méthode des cookies non plus).Referer
n'est pas non plus fiable; de nombreux proxys et extensions de navigateur le retirent des requêtes.J'ai écrit cette fonction pour vérifier les deux méthodes en utilisant l'ancienne
window.performance.navigation
et la nouvelleperformance.getEntriesByType("navigation")
en même temps:Description du résultat:
0: clic sur un lien, saisie de l'URL dans la barre d'adresse du navigateur, soumission de formulaire, clic sur un signet, initialisation via une opération de script.
1: en cliquant sur le bouton Recharger ou en utilisant
Location.reload()
2: Utilisation de l'historique du navigateur (Bakc et Forward).
3: activité de pré - rendu comme
<link rel="prerender" href="https://example.com/next-page.html">
4: toute autre méthode.
la source
J'ai trouvé des informations ici Détection Javascript Actualisation de la page
la source
la source