我正在构建一个网站,使用div
发布。当我将页面滚动到位置X后刷新页面后,页面会加载并保持滚动位置在X。
如何强制页面在刷新时滚动到顶部?
我能想到的方法是,在
onLoad()
函数中运行一些JS或jQuery代码来设置页面滚动到顶部。但我不知道该怎么做。更好的选择是是否有某个属性或其他东西可以将页面加载为默认滚动位置(即在顶部),这将类似于页面加载,而不是页面刷新。
我正在构建一个网站,使用div
发布。当我将页面滚动到位置X后刷新页面后,页面会加载并保持滚动位置在X。
如何强制页面在刷新时滚动到顶部?
我能想到的方法是,在onLoad()
函数中运行一些JS或jQuery代码来设置页面滚动到顶部。但我不知道该怎么做。
更好的选择是是否有某个属性或其他东西可以将页面加载为默认滚动位置(即在顶部),这将类似于页面加载,而不是页面刷新。
对于一个简单的普通 JavaScript 实现:
window.onbeforeunload = function () {
window.scrollTo(0, 0);
}
Safari 11.0.3
上测试了一下,对我来说能正常工作,你使用的是哪个版本? - ProfNandaadocument.querySelector('html').style.scrollBehavior = '';
。如果它被设置为 smooth
,在页面重新加载之前可能无法到达顶部。 - kevnk这里的答案不适用于Safari浏览器, document.ready经常会过早触发。
应该使用beforeunload
事件来防止您执行某些setTimeout
$(window).on('beforeunload', function(){
$(window).scrollTop(0);
});
$(window).scrollTop(0)
方法。但是,在 Chrome 80 测试时,重新加载后会返回到旧位置。为了避免这种情况,请将 history.scrollRestoration
设置为 "manual"
。//Reset scroll top
history.scrollRestoration = "manual";
$(window).on('beforeunload', function(){
$(window).scrollTop(0);
});
history.scrollRestoration = "manual";
和 $(window).scrollTop(0);
即可。 - nightrain最佳答案如下:
window.onbeforeunload = function () {
window.scrollTo(0,0);
};
(这适用于非jQuery,如果你正在寻找JQ方法,请查找)
编辑:有一个小错误,应该是"onbeforeunload" :)
Chrome和其他浏览器会在卸载之前“记住”最后的滚动位置,所以如果你在页面卸载之前将值设置为0,0,它们就会记住0,0,并且不会滚动回滚动条所在的位置:)document.documentElement.scrollTop
才能正常工作。但我通常会同时使用两者。 - Graham John您还可以尝试
$(document).ready(function(){
$(window).scrollTop(0);
});
如果您想要在x位置滚动,则可以将0的值更改为x。if (history.scrollRestoration) {
history.scrollRestoration = 'manual';
} else {
window.onbeforeunload = function () {
window.scrollTo(0, 0);
}
}
history.scrollRestoration = 'manual';
这一行代码。 - rebane2001不要使用 location.reload()
,而是直接使用 location.href = location.href
。它不会像location.reload()
那样滚动到上一个位置。
注意:如果URL中有任何#符号,则不会重新加载
<script> location.hash = (location.hash) ? location.hash : " "; </script>
<head>
标签中。不确定单页应用程序的行为!但在常规页面中确实像魅力一样工作。