强制页面滚动位置在页面刷新页面顶部

我正在build立一个网站,我与div发布。 在滚动到位置X后刷新页面时,页面将以滚动位置加载为X.

我如何强制页面滚动到页面刷新顶部?

  • 我能想到的是一些JS或jQuery作为页面的onLoad()函数运行,以将页面滚动到顶部。 但我不知道我该怎么做。

  • 一个更好的select是,如果有一些属性或东西的页面加载其默认的滚动位置(即在顶部),这将有点像页面加载 ,而不是页面刷新

您可以使用DOM准备中的scrollTop方法来执行此操作:

 $(document).ready(function(){ $(this).scrollTop(0); }); 

对于一个简单的JavaScript实现:

 window.onbeforeunload = function () { window.scrollTo(0, 0); } 

这里的答案不适用于Safari浏览器,document.ready往往被炒得太早。

应该使用beforeunload事件,以防止你做一些setTimeout

 $(window).on('beforeunload', function(){ $(window).scrollTop(0); }); 

你也可以试试

 $(document).ready(function(){ $(window).scrollTop(0); }); 

如果要在x位置滚动,则可以将0的值更改为x。

在这里检查jQuery .scrollTop()函数

它看起来像

 $(document).load().scrollTop(0); 
 <script> location.hash = (location.hash) ? location.hash : " "; </script> 

把上面的脚本放在你的html的<head>标签中。 不确定单个页面应用程序的行为! 但是在正规的页面中肯定有魅力。

 $(document).ready(function(){ $(window).scrollTop(0); }); 

没有为我工作,因为谷歌浏览器会在页面加载完成后向下滚动。 我用的是

 $(document).ready(function() { var url = window.location.href; console.log(url); if( url.indexOf('#') < 0 ) { window.location.replace(url + "#"); } else { window.location.replace(url); } }); 

//最后用#加载页面。 所以它会始终加载在顶部。

再次,最好的答案是:

window.onbeforeunload = function () { window.scrollTo(0,0);

(这是非jQuery的,查找如果您正在寻找的JQ方法)

编辑:“onbeforunload”有点错误:)铬和其他浏览器“记住”卸载的最后一个滚动位置,所以如果你设置的值为0,0只是为了卸载你的页面,他们会记得0,0和将不会回滚到滚动条的位置:)

而不是location.reload() ,只需使用location.href = location.href 。 它不会像location.reload()那样滚动到前一个位置。

注意:如果URL中有#号,这将不会重新加载

这里的答案(在$(document).ready滚动)不起作用,如果页面中有一个video。 在这种情况下,这个页面在这个事件被解雇后滚动,覆盖我们的工作。

最佳答案应该是:

 $(window).on('beforeunload', function(){ $(window).scrollTop(0); });