我正在建立一个网站,我用div
s发布。当我在页面滚动到位置 X 后刷新页面时,页面加载的滚动位置为 X。
如何强制页面在页面刷新时滚动到顶部?
我能想到的是一些 JS 或 jQuery 作为
onLoad()
页面的函数运行来设置页面滚动到顶部。但我不知道我怎么能做到这一点。更好的选择是,如果有一些属性或某些东西可以将页面加载为默认滚动位置(即在顶部),这将类似于page load,而不是page refresh。
我正在建立一个网站,我用div
s发布。当我在页面滚动到位置 X 后刷新页面时,页面加载的滚动位置为 X。
如何强制页面在页面刷新时滚动到顶部?
我能想到的是一些 JS 或 jQuery 作为onLoad()
页面的函数运行来设置页面滚动到顶部。但我不知道我怎么能做到这一点。
更好的选择是,如果有一些属性或某些东西可以将页面加载为默认滚动位置(即在顶部),这将类似于page load,而不是page refresh。
对于简单的纯JavaScript 实现:
window.onbeforeunload = function () {
window.scrollTo(0, 0);
}
这里的答案不适用于 safari,document.ready 经常被过早地触发。
应该使用beforeunload
阻止你做一些事情的事件setTimeout
$(window).on('beforeunload', function(){
$(window).scrollTop(0);
});
再次,最佳答案是:
window.onbeforeunload = function () {
window.scrollTo(0,0);
};
(这对于非 jQuery,如果您正在搜索 JQ 方法,请查找)
编辑:它的“onbeforunload”有点错误:) Chrome 和其他浏览器“记住”卸载前的最后一个滚动位置,因此如果您在卸载页面之前将该值设置为 0,0,它们将记住 0,0 并获胜不滚动回滚动条所在的位置:)
要重置窗口滚动回到顶部,$(window).scrollTop(0)
在 beforeunload 事件中会起作用,但是,我在 Chrome 80 中进行了测试,它会在重新加载后返回到旧位置。
为了防止这种情况,设置history.scrollRestoration
到"manual"
。
//Reset scroll top
history.scrollRestoration = "manual";
$(window).on('beforeunload', function(){
$(window).scrollTop(0);
});