在后退按钮后重新加载页面,但保持滚动位置

yhxst69z  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(303)

我正在编写一个简单的php ajax crud。在edit.php中编辑一行的数据之后,我用window.history.back()点击了返回按钮;
数据在mysql上更新,但是主列表(返回后)没有更新。我想我应该使用reload(),但是如果我使用reload(),每当页面被重新加载时,滚动位置就会跳转到顶部,这对用户来说不太方便。
我搜索了一些将滚动位置存储到本地存储的解决方案,然后在重新加载后将其回调,但我不知道从何处开始。有什么想法吗?

mqkwyuun

mqkwyuun1#

使用“获取参数”保存滚动条的位置,同时仍然刷新:

var scroll = document.documentElement.scrollTop; // get page scroll
location.href = '?scroll=' + scroll; // refresh page and save scroll as a GET parameter

并在脚本的开头添加这个(这样您就可以检查 scroll 参数设置并滚动到该位置):

// get scroll parameter
var scrollFromGet = location.search.match(/scroll=(\d+)/);

// set scroll if there is any
if(scrollFromGet[1]) 
    document.documentElement.scrollTop = scrollFromGet[1];
qyuhtwio

qyuhtwio2#

我想出了解决办法。使用window.history.back()时的页面;未更新。然后,每当它被window.history.back()导航回来时,我们需要重新加载它;否则,将只加载一次。
以下是解决方案:链接
因此,通过重新加载它自己,大多数浏览器将保持相同的滚动和以前一样。所以我可以走了

相关问题