Je construis un site Web que je publie avec div
s. Lorsque j'actualise la page après son défilement jusqu'à la position X, la page est chargée avec la position de défilement sous la forme X.
Comment forcer le défilement de la page vers le haut lors de l'actualisation de la page?
Ce que je peux penser est de certains JS ou jQuery exécutés comme onLoad()
fonction de la page à SET les pages défilent vers le haut. Mais je ne sais pas comment je pourrais faire ça.
Une meilleure option serait s'il y a une propriété ou quelque chose pour que la page soit chargée avec sa position de défilement par défaut (c'est-à-dire en haut) qui sera un peu comme charger une page , au lieu de actualiser la page .
Pour une implémentation JavaScript simple simple :
window.onbeforeunload = function () {
window.scrollTo(0, 0);
}
La réponse ici ne fonctionne pas pour safari, document.ready est souvent renvoyé trop tôt.
Doit utiliser l'événement beforeunload
qui vous empêche de faire quelques setTimeout
$(window).on('beforeunload', function(){
$(window).scrollTop(0);
});
Encore une fois, la meilleure réponse est:
window.onbeforeunload = function () { window.scrollTo(0,0);
(c'est pour jQuery non, cherchez si vous cherchez la méthode JQ)
EDIT: une petite erreur c'est "onbeforunload" :) _ Chrome et les autres navigateurs "se souviennent" de la dernière position de défilement avant le déchargement, donc si vous définissez la valeur sur 0,0 juste avant le déchargement de votre page, ils rappelez-vous de 0,0 et ne revenez pas à l'endroit où se trouvait la barre de défilement :)
Vérifiez la fonction jQuery .scrollTop()
ici
Ça ressemblerait à quelque chose comme
$(document).load().scrollTop(0);
Vous pouvez aussi essayer
$(document).ready(function(){
$(window).scrollTop(0);
});
Si vous souhaitez faire défiler à la position x que vous pouvez modifier la valeur de 0 à x.
Au lieu de location.reload()
, utilisez simplement location.href = location.href
. Il ne passera pas à la position précédente comme le fait location.reload()
.
Note: Ceci ne rechargera pas s'il y a des # dans l'URL
<script> location.hash = (location.hash) ? location.hash : " "; </script>
Mettez le script ci-dessus dans la balise <head>
de votre code HTML. Vous ne savez pas comment les applications d'une page se comportent! Mais bien sûr, fonctionne comme un charme dans les pages régulières.
La réponse ici (défilement dans $(document).ready
) ne fonctionne pas s'il y a une vidéo dans la page. Dans ce cas, la page défile après le déclenchement de cet événement, annulant ainsi notre travail.
La meilleure réponse devrait être:
$(window).on('beforeunload', function(){
$(window).scrollTop(0);
});
$(document).ready(function(){
$(window).scrollTop(0);
});
ne fonctionnait pas pour moi, car Google chrome revenait simplement à la fin du chargement de la page. Ce que j'ai utilisé était
$(document).ready(function() {
var url = window.location.href;
console.log(url);
if( url.indexOf('#') < 0 ) {
window.location.replace(url + "#");
} else {
window.location.replace(url);
}
});
// Ceci charge la page avec un # à la fin. Donc, il sera toujours chargé en haut.
La réponse supercalifragilisticexpialidocious est:
ajoutez ceci en haut de votre fichier js ou balise script
document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
document.body.scrollTop = 0; // For Safari