2017-08-09 5 views
4

J'ai rempli un formulaire contenant mon nom complet et mon adresse. Lorsque j'appuie sur ⌘R, la page est actualisée, mais le formulaire contient toujours les données que j'ai remplies.Détecter la différence entre rafraîchir et recharger

Lorsque je recharge la page Web via le bouton de rechargement en haut à gauche de Google Chrome, le formulaire est vide.

Comment puis-je détecter cette différence avec JavaScript (ou jQuery)?


J'ai essayé:

$(window).on('load', function(){ 

    localStorage.setItem('gForm_isDone', '{"0":false,"1":false,"2":false,"3":false,"4":false,"5":false,"6":false,"7":false,"8":false,"9":false,"10":false,"11":false}'); 
    console.log('localStorage emptied'); 

    console.log(localStorage.getItem('gForm_isDone')); 

}); 

Dans mon scénario, je veux vider le localStorage, mais seulement quand la page rechargements, pas quand il rafraîchit.

+1

Je ne peux pas reproduire ce comportement (pour moi il est toujours effacé sur le chrome et jamais sur FF), mais ne pouvez-vous pas simplement vérifier si les entrées ont une certaine valeur? – Kaiido

+0

Hmm, c'est une bonne idée! Je suis vraiment curieux de savoir s'il existe un autre moyen (quelque chose qui ressemble moins à une solution de contournement) de le vérifier, mais dans ce cas, cela pourrait très bien fonctionner! Merci pour la contribution précieuse! :) –

Répondre

1

utilisation de la fonction window.onbeforeunload pour vérifier si l'actualisation/reload est pressé et traité l'événement localStorage.clear()

window.onbeforeunload = function(){ 
var message = 'Are you sure you want to reload?'; 
    if (typeof evt == 'undefined') { 
    evt = window.event; 
    } 
    if (evt) { 
    evt.returnValue = message; 
    } 
    return message; 
} 
1

Une possibilité est de détecter les performances de la fenêtre à l'aide

if (window.performance) { 
    console.info(performance.navigation.type); 
} 

Il retournera 0 ou 1. 0 pour la page n'est pas rechargé ou appelé avec le cache vide. 1 nous dira que la page est actualisée en utilisant ctrl+R ou en utilisant le bouton du navigateur.

if (window.performance) { 
    console.info("window performance work on browser"); 
} 
    if (performance.navigation.type == 1) { 
    console.info("This page is reloaded"); 
    } else { 
    console.info("This page is not reloaded or just called with empty cache"); 
    } 
+0

Mais il n'y a pas de différence entre le hard-refresh et le rafraîchissement simple. (Bien que ce commentaire ne puisse s'appliquer que pour FF car je ne pouvais pas tester sur chrome: Je ne peux pas reprocher le comportement d'OP) – Kaiido

+0

hard-refresh vous conduira à vider le cache et l'actualisation simple habituellement ne va pas. –

+0

Il est assez astucieux, il ne vérifie pas vraiment comment vous avez rechargé, seulement si le cache a été vidé après le chargement de la page web –