28

我遇到了一个实际上是 Chrome 上的“功能”的问题。大多数人可能都知道,Chrome 会记住一个滚动位置,每当您返回某个页面时,它就会返回到该位置。我对此有点问题。

有没有办法在用户不注意的情况下覆盖它?

米斯

失败的尝试:

  • document.ready 上的 ScrollTop
4

5 回答 5

70

在 Chrome 46+ 中,可以使用 history.scrollRestoration 关闭自动滚动行为:

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

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

于 2016-07-08T15:12:29.697 回答
11

我检查了chrome,效果很好。有时setTimeout会耍花招:)

<script type="text/javascript">
window.onload=function(){
    setTimeout(function(){
        scrollTo(0,-1);
    },0);
}
</script>
于 2013-04-26T16:27:44.343 回答
0
x = 0;  //horizontal coord
y = document.height; //vertical coord
window.scroll(x,y);

一些像这样的 Javascript 很可能能够被操纵以停止自动滚动。

不过,这取决于,您是否愿意简单地将滚动设置为自动转到顶部,或者您是否真的在寻找 Chrome 标准选项以将页面带到最后滚动位置,以完全关闭?

您当前尝试将什么用于 scrollTop()?

于 2013-04-26T15:04:55.527 回答
0

我通过附加到滚动事件来解决这个问题,然后在用户第一次滚动时重置滚动位置。适用于我的现场重新加载。

看起来像这样:

var scrollResetOnce = false;
$(window).on("scroll", function() {
    if (scrollResetOnce) return;
    scrollResetOnce = true;
    scrollTo(0, -1);
});
于 2014-09-16T13:10:39.330 回答
-2

这是完成此操作的一种干净方法。

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

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

于 2014-01-16T22:00:46.183 回答