所以我想每3分钟刷新一次页面,但是页面应该保持在相同的位置,而不是顶部。我已经尝试过这个程序,但它不是我想要的。自动刷新3分钟,但保持在同一个滚动位置
<script type="text/javascript">
function load() {
setTimeout("window.open(self.location, '_self');", 180000);
}
</script>
<body onload="load()">
所以我想每3分钟刷新一次页面,但是页面应该保持在相同的位置,而不是顶部。我已经尝试过这个程序,但它不是我想要的。自动刷新3分钟,但保持在同一个滚动位置
<script type="text/javascript">
function load() {
setTimeout("window.open(self.location, '_self');", 180000);
}
</script>
<body onload="load()">
如果jQuery是好的,你可以这样做:
$(window).on('beforeunload', function() {
$(window).scrollTop(0);
});
达到你想要什么,你需要将scrollTop位置存储在localStorage为当页刷新,
setTimeout(function() {
localStorage.setItem('scroll_top', window.scrollTop);
window.open(self.location, '_self');
}, 180000);
然后装载时,
if (localStorage.getItem('scroll_top') !== null)
window.scrollTo(0, parseInt(localStorage.getItem('scroll_top')));
所以你的最终结果是,
function load() {
if (localStorage.getItem('scroll_top') !== null)
window.scrollTo(0, parseInt(localStorage.getItem('scroll_top')));
setTimeout(function() {
localStorage.setItem('scroll_top', window.scrollTop);
window.open(self.location, '_self');
}, 180000);
}
可以使用localStorage
节省滚动的当前位置,然后在timeout
function load() {
//get the previous scroll position and set to the HTML body
if(typeof localStorage.scrollPos !== 'undefined'){
document.body.scrollTop = localStorage.scrollPos;
}
setTimeout(function(){
//get the scroll position of the page
//and store it in local storage
localStorage.scrollPos = document.body.scrollTop;
}, 180000);
}
检索的页面加载它的功能是 - 在load()
函数调用中,它将从localStorage
中检索滚动位置并将其分配给页面的将页面滚动到重载前的位置。请注意,localStorage
每次都会在超时时间内更新,以便在超时期间存储页面的最新滚动位置。
谢谢你的回答,我有一个问题,请加我:window.open(self.location,'_self');后localStorage.scrollPos = ... –
是的,你可以。另外不要忘记绿色标记答案。 –
在重新加载之前使用localstorage保存当前位置(x和y)。重新加载后使用此值。 window.scrollTo(x,y)
是用于此操作的函数。
将它锚定到该位置的元素或保存滚动信息,并重新加载时,尽管我相信大多数浏览器已经这样做。 – Script47
在localStorage中存储scrollTop并在重新加载时检查它。奇怪的方法寿,idk你在做什么,但也许阿贾克斯会帮助你。 – user5014677
使用'setInterval'而不是'setTimeout' – Nemani