强制页面滚动位置在页面刷新页面顶部
我正在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); });