web-dev-qa-db-fra.com

Chrome se souvient de la position de défilement

Je rencontre un problème qui est en fait une "fonctionnalité" sur Chrome. Comme la plupart d'entre vous le savent, Chrome se souvient de la position de défilement à laquelle il revient, chaque fois que vous revenez à une page. Et j'ai en quelque sorte un problème avec ça.

Existe-t-il un moyen de le remplacer sans que l'utilisateur s'en aperçoive?

Mees

Essais infructueux:

  • ScrollTop sur document.ready
23
amees_me

J'ai vérifié sur chrome, ça a bien fonctionné. Parfois, setTimeout fait un tour :)

<script type="text/javascript">
window.onload=function(){
    setTimeout(function(){
        scrollTo(0,-1);
    },0);
}
</script>
10
Ikrom

Dans Chrome 46+, le comportement de défilement automatique peut être désactivé à l'aide de history.scrollRestoration:

if ('scrollRestoration' in history) {
  history.scrollRestoration = 'manual';
}

source: https://developers.google.com/web/updates/2015/09/history-api-scroll-restoration

51
Cory Duncan

J'ai résolu ce problème en joignant l'événement de défilement, puis en réinitialisant la position de défilement lors du premier défilement d'un utilisateur. Fonctionne pour des rechargements sur place pour moi.

Ressemble à ça:

var scrollResetOnce = false;
$(window).on("scroll", function() {
    if (scrollResetOnce) return;
    scrollResetOnce = true;
    scrollTo(0, -1);
});
0
Mikhail Kornienko
x = 0;  //horizontal coord
y = document.height; //vertical coord
window.scroll(x,y);

Certains Javascript comme celui-ci peuvent très bien être manipulés pour arrêter le défilement automatique. 

Cela dépend cependant, souhaitez-vous que le défilement soit simplement configuré pour aller automatiquement au sommet ou recherchez-vous l'option standard de Chrome permettant de placer la page à la dernière position de défilement, pour qu'elle soit complètement désactivée?

Qu'est-ce que vous essayez actuellement d'utiliser pour scrollTop ()? 

0
Luke Clifford