2017-08-29 39 views
-1

所以我想每3分钟刷新一次页面,但是页面应该保持在相同的位置,而不是顶部。我已经尝试过这个程序,但它不是我想要的。自动刷新3分钟,但保持在同一个滚动位置

<script type="text/javascript"> 
    function load() { 
     setTimeout("window.open(self.location, '_self');", 180000); 
    } 
</script> 

<body onload="load()"> 
+0

将它锚定到该位置的元素或保存滚动信息,并重新加载时,尽管我相信大多数浏览器已经这样做。 – Script47

+0

在localStorage中存储scrollTop并在重新加载时检查它。奇怪的方法寿,idk你在做什么,但也许阿贾克斯会帮助你。 – user5014677

+0

使用'setInterval'而不是'setTimeout' – Nemani

回答

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); 

} 
0

可以使用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每次都会在超时时间内更新,以便在超时期间存储页面的最新滚动位置。

+0

谢谢你的回答,我有一个问题,请加我:window.open(self.location,'_self');后localStorage.scrollPos = ... –

+0

是的,你可以。另外不要忘记绿色标记答案。 –

0

在重新加载之前使用localstorage保存当前位置(x和y)。重新加载后使用此值。 window.scrollTo(x,y)是用于此操作的函数。