1

假设我使用无限滚动或“加载更多结果”按钮来实现搜索结果,该按钮将更多结果 Ajaxes 到初始结果页面上。因此,用户可以在不离开相同搜索结果页面的情况下浏览结果。

我的用户滚动了一会儿,然后找到一个特定的结果并点击它。这不是他们需要的,所以他们点击返回。

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

这样做的公认方法是什么?

(请注意,这并不特定于搜索结果。通常,如果我在浏览器中加载页面后弄乱了页面,当用户返回该页面时,我如何保留/重建该页面的状态?)

4

2 回答 2

0

有多种方法可以解决这个问题。

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

    在第三次加载 10 个元素后,您的起始索引将为 40。

    现在您可以将此索引作为散列动态放入 URL 中,例如将其扩展为http://mysite.com/search?q=searchterm#startindex=40. 现在,如果用户单击搜索结果然后返回,您将能够从 URL 中提取该值并将适当数量的附加结果加载到视图中。
    可以选择将用户滚动到或多或少的最后一个位置。

    这个原则与使用 cookie、localStorage、会话参数或你所拥有的东西而不是 URL 哈希类似。

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

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

我目前正在处理类似的问题,我认为将使用第二种方法。

于 2012-08-03T13:33:59.290 回答
-1

一种方法是以编程方式模拟浏览器。使用javascript 历史对象。您可以放置​​一个按钮并在单击时调用 go() 函数,如下所示

history.go(-1)

这只会将您带到上一页。

有关更多详细信息,请参见此处

于 2012-04-18T03:11:14.583 回答