当用户点击后退按钮时,如何重建客户端修改的页面?

时间:2012-04-18 02:29:59

标签: java client-side infinite-scroll

假设我使用无限滚动或“加载更多结果”按钮实现搜索结果,该按钮将更多结果发送到初始结果页面。因此,用户无需离开相同的搜索结果页即可浏览结果。

我的用户滚动了一段时间,然后查找特定结果并点击它。这不是他们需要的,所以他们点击回来。

如何将结果页面恢复到离开时的状态,让页面向下滚动到正确的位置?初始搜索可能产生了10个结果,如果我们加载了20个结果,那就是页面上的30个结果,并说他们在离开页面时滚动到结果23。

接受这种方法的方法是什么?

(请注意,这不是特定于搜索结果。一般情况下,如果我在浏览器中加载页面后弄乱页面,当用户返回时,如何保留/重建此页面的状态?)

2 个答案:

答案 0 :(得分:0)

这个问题有多种方法。

  • 假设您正在处理搜索结果。每当您将更多结果加载到视图中时,下一个搜索结果的起始索引就会上升。

    第三次加载10个元素后,你的起始索引将是40。

    现在,您可以将此索引动态地作为哈希值放入URL中,例如将其扩展为http://mysite.com/search?q=searchterm#startindex=40。现在,如果用户点击搜索结果然后再点击,您将能够从URL中提取该值并将相应数量的其他结果加载到视图中。
    可选择将用户滚动到或多或少的最后位置。

    这个原则类似于使用cookies,localStorage,会话参数或者你有什么代替URL哈希。

  • 您可以在客户端保存完整的搜索结果,例如localStorage和(在“后退”按钮之后)从那里读取并将其注入页面。这样,您就不必再从服务器请求它,反应性可能会更好。

    此时,您还可以保存并恢复用户的滚动位置,以便将他带回到他在页面上的位置。

我正在处理类似的问题,并且我会考虑使用第二种方法。

答案 1 :(得分:-1)

一种方法是以编程方式模拟浏览器。使用 javascript历史记录对象。您可以点击按钮并调用go()函数,如下所示

history.go(-1)

这只会将您带到上一页。

See here了解更多细节。