【问题标题】:How to let the chrome forget the page scroll position?如何让chrome忘记页面滚动位置?
【发布时间】:2013-02-27 15:33:07
【问题描述】:

例如,我打开一个网页,然后向下滚动到某个位置,

然后我刷新chrome浏览器,浏览器可以再次滚动之前的位置

如何使用javascript或css让浏览器忘记滚动?

我尝试了$(window).scrollTop(0),但它不起作用

【问题讨论】:

  • 您是否尝试在setTimeout 中使用.scrollTop(0)
  • scrollTop-ing 足够晚是我唯一能想到的。比如说,页面加载后 50 毫秒。不过,这似乎很老套。
  • @Jan 很老套,另一方面,整个主题有点老套。
  • 你可能需要把它放在准备好的文档中,在这种情况下它应该可以工作

标签: javascript css google-chrome scroll


【解决方案1】:

在下面的问题中解决了。

Disable brower's auto scroll after a page refresh?

// bypass auto scrolling.
if ('scrollRestoration' in history) {
  history.scrollRestoration = 'manual';
}

【讨论】:

  • 这可行,但需要对我进行一些额外的调整。
  • 这太简单了,花了 2 天时间才知道 scrollRestoration...谢谢!
【解决方案2】:

我可以说的一种简单方法是在页面加载时运行此代码:

document.location = "#";

window.scrollTo(0);

它再次将浏览器视口设置为页面顶部。

【讨论】:

  • 如果我没记错的话,在页面加载时执行window.scrollTo(0),Chrome 会覆盖你的滚动。
  • 我的意思是即使window.onloadwindow.scrollTo 来说还为时过早。但是,window.onload 之后的几毫秒应该可以。
  • 如果我想让页面滚动到左边而不是顶部,我该怎么办?
  • 第二次@JanDvorak 的发现。 window.onload 中的setTimeout 有效,但此时窗口已经滚动。
  • window.scrollTo(0) 在 Chrome 和 Firefox 中抛出“无法转换为字典”。似乎您需要像这样指定 x 和 y:window.scrollTo(0, 0)
【解决方案3】:

这是完成这项工作的一种简洁方法。

window.addEventListener('unload', function(e){
   document.body.style.display = 'none';
});

只需将正文显示设置为“无”,您就不必担心浏览器在卸载之前会滚动到页面顶部,并且滚动位置将自动重置为 0。

【讨论】:

  • body hidden 不起作用;改成window.scrollTo(0, 0);就可以了。
【解决方案4】:

这对我有用:

JS方式:

window.addEventListener('unload', function(e){
window.scrollTo(0, 0)
});

jquery方式:

$(window).load(function() {
 $(window).scrollTop(0);
});

【讨论】:

    猜你喜欢
    • 2012-09-26
    • 1970-01-01
    • 2015-01-31
    • 2020-09-24
    • 2022-07-15
    • 2019-03-25
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    相关资源
    最近更新 更多