【发布时间】:2021-05-28 08:03:25
【问题描述】:
我正在开发一个显示帖子列表的项目。在列表的最后,有一个加载更多帖子的按钮,这个按钮会通过Ajax将另外12个帖子加载到列表底部。
我遇到了一个看起来很常见的问题,但是我在搜索了几天后找不到解决方案,因此我在这里问。
场景:
用户会点击按钮来加载更多帖子,他们这样做多少次并不重要,但是假设他们点击了足够多的时间来加载 100 多个帖子,然后他们决定点击在帖子上阅读完整帖子。
问题:
现在是问题所在。当用户单击“返回”按钮时,他们将返回帖子列表,但是,帖子列表将作为“新”请求重新加载页面,而不是显示上一次遇到该页面时已加载的 100 多个帖子。 这意味着,如果有人点击了帖子并想回到原来的位置,他们将不得不继续滚动到底部并多次点击“加载更多帖子”按钮,直到他们回到原来的位置是。
目标:
我想要实现的是用户将单击后退按钮,浏览器会将用户发送回他们所在的相同位置,包括滚动位置(它似乎已经这样做)和帖子数量已经加载的 - 基本上,在他们离开时将它们发送回帖子列表。
怎么办?
我可以在每次点击“加载更多”按钮时更新 URL,其中包含已显示的帖子数或按钮被点击的次数,然后当用户返回时,加载相同的内容基于 URL 的帖子数量或帖子“位置”(跳过 x 数量的帖子以到达他们所在的相同“位置”),但这可能导致非常大的 HTTP 请求(在一次,或者更多,如果他们加载更多)或者,当用户向上滚动时,他们将不得不点击另一个按钮来加载以前的帖子,这只是另一个按钮,由于网站的目的,我不想添加。
理想情况下,后退按钮将加载页面的缓存版本,这样它将导致相同的滚动位置,将加载相同的内容,并且不会涉及新的 HTTP 请求 - 它会显示他们离开时的页面。
还有:
该网站使用 PWA,不确定这是否有帮助,但仅供参考,因为它有一些缓存选项。
有什么想法吗?
【问题讨论】:
标签: javascript php html jquery progressive-web-apps