我遇到了一个实际上是 Chrome 上的“功能”的问题。大多数人可能都知道,Chrome 会记住一个滚动位置,每当您返回某个页面时,它就会返回到该位置。我对此有点问题。
有没有办法在用户不注意的情况下覆盖它?
米斯
失败的尝试:
- document.ready 上的 ScrollTop
我遇到了一个实际上是 Chrome 上的“功能”的问题。大多数人可能都知道,Chrome 会记住一个滚动位置,每当您返回某个页面时,它就会返回到该位置。我对此有点问题。
有没有办法在用户不注意的情况下覆盖它?
米斯
失败的尝试:
在 Chrome 46+ 中,可以使用 history.scrollRestoration 关闭自动滚动行为:
if ('scrollRestoration' in history) {
history.scrollRestoration = 'manual';
}
来源:https ://developers.google.com/web/updates/2015/09/history-api-scroll-restoration
我检查了chrome,效果很好。有时setTimeout
会耍花招:)
<script type="text/javascript">
window.onload=function(){
setTimeout(function(){
scrollTo(0,-1);
},0);
}
</script>
x = 0; //horizontal coord
y = document.height; //vertical coord
window.scroll(x,y);
一些像这样的 Javascript 很可能能够被操纵以停止自动滚动。
不过,这取决于,您是否愿意简单地将滚动设置为自动转到顶部,或者您是否真的在寻找 Chrome 标准选项以将页面带到最后滚动位置,以完全关闭?
您当前尝试将什么用于 scrollTop()?
我通过附加到滚动事件来解决这个问题,然后在用户第一次滚动时重置滚动位置。适用于我的现场重新加载。
看起来像这样:
var scrollResetOnce = false;
$(window).on("scroll", function() {
if (scrollResetOnce) return;
scrollResetOnce = true;
scrollTo(0, -1);
});
这是完成此操作的一种干净方法。
window.addEventListener('unload', function(e){
document.body.style.display = 'none';
});
通过简单地将正文显示设置为“无”,您不必担心浏览器在卸载之前会滚动到页面顶部,并且滚动位置将自动重置为 0。