我过度设计的网络应用程序:
- 使用
history.pushState
和popState
事件,以动画化 URL 之间的移动,而不必在#
URL 中使用 a。 - 使用外部 div 来处理滚动条,并且 html 和 body 具有
overflow:hidden
. 这样当用户单击返回时,它不会在向左设置动画之前跳转到顶部。
现在我的问题是,如果用户再次单击前进按钮,我怎样才能保留他们滚动的位置/将它们向下滚动到原来的位置。
我的第一个想法是使用
history.state
对象作为保存滚动位置的地方,然后在用户单击前进时将其加载。(我必须replaceState
在没有history.state
对象的第一页上。)这个想法的问题是,一旦用户点击返回,我就无法再将 scrollTop 添加到当前状态。我的下一个想法是使用一个单独的数组,所以我通过索引拉出滚动位置,但问题是如果用户关闭选项卡然后重新打开它,或者如果他们导航到另一个站点并返回稍后我的,他们的前后历史被保存,但我单独的
scrollTop
s 数组会丢失。
你的建议是什么?