Javascript 禁用浏览器&x27;页面刷新后自动滚动?

Javascript 禁用浏览器&x27;页面刷新后自动滚动?,javascript,google-chrome,scroll,Javascript,Google Chrome,Scroll,有没有一种方法可以禁用某些现代浏览器(Chrome和Safari)在刷新页面时记住滚动位置的行为?不仅仅是Chrome,我认为这一切都会很好 window.onload = function () { window.scrollTo(0, 0); }; 更新您的问题后: 我认为如果我们使用一些cookie或会话存储会更好。文档准备好后,您是否尝试过启动此功能 $(document).ready(function(){ window.scrollTo(0, 0); }); 如果

有没有一种方法可以禁用某些现代浏览器(Chrome和Safari)在刷新页面时记住滚动位置的行为?

不仅仅是Chrome,我认为这一切都会很好

window.onload = function () {
    window.scrollTo(0, 0);
};
更新您的问题后:


我认为如果我们使用一些cookie或会话存储会更好。

文档准备好后,您是否尝试过启动此功能

$(document).ready(function(){
    window.scrollTo(0, 0);
});
如果这不起作用

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

这将把它推到调用堆栈的底部

而不是希望setTimout在堆栈的底部结束-我宁愿强制它,我们点击我们想要的滚动位置。我仍然认为这是一个黑客,我希望我们可以绑定到某种浏览器事件。
var scrollToYPos = 100;
var interval = setInterval(checkPos, 0);

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

我遇到了同样的问题。以下是我提出的基本解决方案:

      // 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);
      });

我认为最简单的方法是诱使浏览器重新加载它认为是新页面的内容

window.location = window.location

我测试过的所有浏览器都是一致的。我个人会远离onload回调,因为它们会在加载过程中导致跳转,这在视觉上不太吸引人。

对于支持history.scrollRestoration的浏览器,可以关闭自动滚动行为:

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

来源:

您为什么要这样做?回到那个位置是一种很好的用户体验。@putvande 100%同意大多数情况,但一个用例是当有大量数据将新数据添加到顶部时,尽管我们可以动态更新数据,但如果用户出于任何原因刷新,我们不希望将其恢复到原来的滚动位置。考虑到这种体验,从他们的角度来看,这不是预期的行为——而且这只是一个用例,还有其他一些用例也存在。任何使用无限滚动进行加载体验的页面都会出现这种情况(意外)问题。这也是我的想法——但我在这种回调中没有任何运气——似乎chrome会在onload启动后自动滚动。噢,
yab。loaded
是一个承诺,一旦加载窗口就会得到解决。相当于
$(window).load(function(){/…})