294 votes

Vérifier si la page est rechargée ou rafraîchie en JavaScript

Je veux vérifier quand quelqu'un essaie de rafraîchir une page.

Par exemple, lorsque j'ouvre une page, rien ne se passe, mais lorsque je rafraîchis la page, une alerte doit s'afficher.

1 votes

Pas vraiment possible sans code côté serveur. Pourquoi en avez-vous besoin ? Si vous nous donnez une vue d'ensemble, nous pourrons peut-être vous proposer une meilleure solution.

0 votes

Peut-être que vous pourriez faire une telle chose avec un cookie... comme stocker l'heure et sur le rechargement comparer la différence de temps.

0 votes

Je veux faire en sorte que le lien facebook soit #!/n'importe quoi. Je veux supprimer le # ! lorsque la page se recharge uniquement.

9voto

sony vizio Points 2724

Si

event.currentTarget.performance.navigation.type

renvoie à

0 => l'utilisateur vient de taper une Url
1 => page rechargée
2 => bouton retour cliqué.

0 votes

J'ai obtenu cette erreur, pouvez-vous l'expliquer davantage ? Erreur de type non détectée : Impossible de lire la propriété 'currentTarget' d'undefined.

0 votes

2 => TYPE_BACK_FORWARD La page a été accédée en naviguant dans l'historique. developer.mozilla.org/fr/US/docs/Web/API/PerformanceNavigation

0 votes

performance.navigation.type est obsolète, voir ma réponse .

8voto

VoronoiPotato Points 1679

J'ai trouvé des informations ici Javascript détectant le rafraîchissement de la page . Sa première recommandation est d'utiliser des champs cachés, qui ont tendance à être conservés lors des rafraîchissements de page.

function checkRefresh() {
    if (document.refreshForm.visited.value == "") {
        // This is a fresh page load
        document.refreshForm.visited.value = "1";
        // You may want to add code here special for
        // fresh page loads
    } else {
        // This is a page refresh
        // Insert code here representing what to do on
        // a refresh
    }
}

<html>

<body onLoad="JavaScript:checkRefresh();">
    <form name="refreshForm">
        <input type="hidden" name="visited" value="" />
    </form>

</body>

</html>

0 votes

Nous pouvons également vérifier en contrôlant Referer et modifier la réponse du serveur en fonction de cette propriété.

0 votes

Remarque : la première méthode indiquée sur cette page échouera parce que le code est exécuté avant que le DOM n'ait été analysé. En déplaçant le <script> vers le bas fonctionnerait, mais ce n'est toujours pas une solution garantie (pas plus que la méthode des cookies).

1 votes

@Adeel : vérification Referer n'est pas non plus fiable ; de nombreux proxys et extensions de navigateur le suppriment des requêtes.

5voto

Manpreet Points 49

J'ai trouvé des informations ici Détection par Javascript du rafraîchissement de la page

function UnLoadWindow() {
    return 'We strongly recommends NOT closing this window yet.'
}

window.onbeforeunload = UnLoadWindow;

5 votes

Où est "ici" ? avez-vous oublié le lien ?

0 votes

Mercisssssssssssss

3voto

Mointy Points 356

Voici une méthode qui est prise en charge par presque tous les navigateurs :

if (sessionStorage.getItem('reloaded') != null) {
    console.log('page was reloaded');
} else {
    console.log('page was not reloaded');
}

sessionStorage.setItem('reloaded', 'yes'); // could be anything

Il utilise SessionStorage pour vérifier si la page est ouverte la première fois ou si elle est rafraîchie.

1 votes

Ne fonctionne pas lors de la réouverture d'un onglet en utilisant ctrl/cmd+T

0voto

Alexis Gatuingt Points 374
if(sessionStorage.reload) { 
   sessionStorage.reload = true;
   // optionnal
   setTimeout( () => { sessionStorage.setItem('reload', false) }, 2000);
} else {
   sessionStorage.setItem('reload', false);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X