Je dois en quelque sorte détecter que l'utilisateur a appuyé sur le bouton retour du navigateur et recharger la page avec une actualisation (rechargement du contenu et des CSS) à l'aide de jquery.
Comment détecter une telle action via jquery?
Parce qu'actuellement, certains éléments ne sont pas rechargés si j'utilise le bouton Précédent dans un navigateur. Mais si j'utilise des liens sur le site Web, tout est actualisé et affiché correctement.
IMPORTANT!
Certaines personnes ont probablement mal compris ce que je veux. Je ne veux pas actualiser la page actuelle. Je souhaite actualiser la page chargée après avoir appuyé sur le bouton Précédent. voici ce que je veux dire de manière plus détaillée:
Vous pouvez utiliser l'événement pageshow
pour gérer la situation lorsque le navigateur accède à votre page par le biais de l'historique:
window.addEventListener( "pageshow", function ( event ) {
var historyTraversal = event.persisted ||
( typeof window.performance != "undefined" &&
window.performance.navigation.type === 2 );
if ( historyTraversal ) {
// Handle page restore.
window.location.reload();
}
});
Notez que le cache HTTP peut également être impliqué. Vous devez définir les en-têtes HTTP appropriés liés au cache sur le serveur pour mettre en cache uniquement les ressources devant être mises en cache. Vous pouvez également effectuer un rechargement forcé pour inciter le navigateur à ignorer le cache HTTP: window.location.reload( true )
. Mais je ne pense pas que ce soit la meilleure solution.
Pour plus d'informations, consultez:
Cela fait un moment que cela a été posté, mais j'ai trouvé une solution plus élégante si vous n'avez pas besoin de supporter les anciens navigateurs.
Vous pouvez faire un chèque avec
performance.navigation.type
La documentation, y compris le support du navigateur, est disponible ici: https://developer.mozilla.org/en-US/docs/Web/API/Performance/navigation
Donc, pour voir si la page a été chargée à partir de l'historique en utilisant le dos, vous pouvez le faire
if(performance.navigation.type == 2){
location.reload(true);
}
Le 2
indique que la page a été accédée en naviguant dans l'historique. D'autres possibilités sont-
0:
La page a été accédée en suivant un lien, un signet, une soumission de formulaire ou un script, ou en tapant l'URL dans la barre d'adresse.
1:
La page a été accédée en cliquant sur le bouton Recharger ou via la méthode Location.reload ().
255:
Toute autre manière
Celles-ci sont détaillées ici: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation
Il suffit d'utiliser jquery:
jQuery( document ).ready(function( $ ) {
//Use this inside your document ready jQuery
$(window).on('popstate', function() {
location.reload(true);
});
});
Ce qui précède fonctionne à 100% lorsque vous cliquez sur le bouton Précédent ou Suivant en utilisant également ajax.
si ce n'est pas le cas, il doit y avoir une mauvaise configuration dans une autre partie du script.
Par exemple, il pourrait ne pas recharger si quelque chose comme celui de l'exemple de l'article précédent est utilisé window.history.pushState('', null, './');
ainsi, lorsque vous utilisez history.pushState();
, assurez-vous de l'utiliser correctement.
Suggestion dans la plupart des cas, vous aurez juste besoin de:
history.pushState(url, '', url);
Aucune fenêtre.histoire ... et assurez-vous que url est défini.
J'espère que cela pourra aider..
Vous devez utiliser une entrée masquée comme indicateur d'actualisation, avec la valeur "non":
<input type="hidden" id="refresh" value="no">
Maintenant, en utilisant jQuery, vous pouvez vérifier sa valeur:
$(document).ready(function(e) {
var $input = $('#refresh');
$input.val() == 'yes' ? location.reload(true) : $input.val('yes');
});
Lorsque vous cliquez sur le bouton Précédent, les valeurs des champs masqués conservent la même valeur que lorsque vous avez quitté la page.
Ainsi, la première fois que vous chargez la page, la valeur de l’entrée sera «non». Lorsque vous revenez à la page, ce sera "oui" et votre code JavaScript déclenchera une actualisation.
J'ai trouvé la meilleure réponse et cela fonctionne parfaitement pour moi
il suffit d'utiliser ce script simple dans votre lien
<A HREF="javascript:history.go(0)">next page</A>
ou l'événement de clic de bouton
<INPUT TYPE="button" onClick="history.go(0)" VALUE="next page">
lorsque vous l'utilisez, vous actualisez d'abord votre page, puis passez à la page suivante.
Je l'ai utilisé dans un identifiant CAS et me donne ce que je veux ... je l'espère.
détails trouvés de ici
Recharger est facile. Tu devrais utiliser:
location.reload(true);
Et détecter en retour c'est:
window.history.pushState('', null, './');
$(window).on('popstate', function() {
location.reload(true);
});