Javascript 刷新期间保持滚动位置

Javascript 刷新期间保持滚动位置,javascript,scroll,Javascript,Scroll,我有一个web服务器,它显示房间列表并显示这些房间的状态。每30秒刷新一次,以收集新事件并显示房间的任何状态更改 问题是刷新率必须很快,因此可以实时注册事件,但每次页面刷新时,用户都会被移回列表的顶部,这在可能有几百个房间的情况下是一个问题 服务器由.jsp文件组成,我认为这些文件是javascript,因为它在页面顶部附近的HTML标记中表示为javascript 我只使用过javascript作为PHP的外接程序,所以我有点不确定 有人知道我可以如何存储用户的滚动位置,并在页面刷新时将其重置

我有一个web服务器,它显示房间列表并显示这些房间的状态。每30秒刷新一次,以收集新事件并显示房间的任何状态更改

问题是刷新率必须很快,因此可以实时注册事件,但每次页面刷新时,用户都会被移回列表的顶部,这在可能有几百个房间的情况下是一个问题

服务器由.jsp文件组成,我认为这些文件是javascript,因为它在页面顶部附近的HTML标记中表示为javascript

我只使用过javascript作为PHP的外接程序,所以我有点不确定

有人知道我可以如何存储用户的滚动位置,并在页面刷新时将其重置吗


谢谢,您可以将scrollTop的值存储在cookie中,然后重新加载,将scrollTop设置回该值,但这可能会给用户带来不稳定的体验

您可能希望尝试对新数据进行XHR/Ajax调用,然后将其附加到页面上的正确位置

您最喜欢的JS库将使这项工作变得非常简单。

现在您应该使用它,而不是使用cookie。cookie将在各个选项卡之间共享(可能非常混乱),而sessionStorage是选项卡所独有的:

sessionStorage与Window.localStorage类似,唯一的区别是,虽然localStorage中存储的数据没有过期设置,但当页面会话结束时,sessionStorage中存储的数据将被清除。只要浏览器处于打开状态,页面会话就会持续,并且在页面重新加载和恢复过程中仍然有效在新选项卡或窗口中打开页面将导致启动新会话,这与会话cookie的工作方式不同


*他们的。如果您使用的是php+ajax,则可以加载数据,而无需刷新页面。您可以发布任何代码/更多详细信息吗?JSP代表JavaServer页面,它不是Javascript。这可能有助于您的搜索。@Calum我不使用php。我正在增强其他人的代码(以前的员工),但不确定我在做什么,因为我只知道php。