Désactiver le défilement automatique du brower après une actualisation de la page?

Existe-t-il un moyen de désactiver le comportement où certains navigateurs modernes (Chrome et Safari) se souviennent de votre position de défilement sur un rafraîchissement de page?

Pour les navigateurs qui prennent en charge history.scrollRestoration, le comportement de défilement automatique peut être désactivé:

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

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

Non seulement pour chrome, mais pour tous, je pense que cela fonctionnera bien.

 window.onload = function () { window.scrollTo(0, 0); }; 

Après la mise à jour de votre question:

Je pense que c'est mieux si nous utilisons des cookies ou un stockage de session.

Avez-vous tenté de tirer cela après que le document soit prêt?

 $(document).ready(function(){ window.scrollTo(0, 0); }); 

Si cela ne fonctionne pas …

 $(document).ready(function(){ setTimeout(function(){ window.scrollTo(0, 0); }, 1); }); 

Ce qui poussera ce vers le bas de la pile d'appels

Au lieu d'espérer qu'un setTimout finisse au bas de la pile – je l'applique plutôt que nous atteignions la position de défilement que nous souhaitons. Je considère toujours cela comme un hack, j'espérais une sorte d'événement de navigateur auquel nous nous attachons.

 var scrollToYPos = 100; var interval = setInterval(checkPos, 0); function checkPos() { if ($(window).scrollTop() == scrollToYPos) { clearInterval(interval); } else { window.scrollTo( 0, scrollToYPos ); checkPos(); } } 

J'ai rencontré ce même problème. Voici la solution de base avec laquelle je suis venu:

  // scroll the user to the comments section if we need to wt = win.scrollTop(); wb = wt + win.height(); // if scroll position is 0, do this (it's a fresh user), otherwise // the browser is likely to resume the user's scroll position, in // which case we don't want to do this yab.loaded().done(function() { // it seems that browsers (consistently) set the scroll position after // page load. Accordingly wait a 1/4 second (I haven't tested this to the lowest // possible timeout) before triggering our logic setTimeout(function() { // if the window top is 0, scroll the user, otherwise the browser restored // the users scroll position (I realize this fails if the users scroll position was 0) if(wt === 0) { p = self.container.offset().top; if(wb != p) { win.scrollTop(p - th - 20); } } }, 250); }); 

Je pense que la manière la plus simple serait de faire tourner le navigateur dans un rechargement qu'il pense être une nouvelle page.

 window.location = window.location 

Tous les navigateurs sur lesquels j'ai testé cela fonctionnent de manière cohérente. Je resterais personnellement éloigné des rappels de rechange, car ils peuvent provoquer des sauts pendant la charge qui ne sont pas trop visuellement attrayants.