【问题标题】:Using history.js come to the same scroll position when we click back button当我们单击后退按钮时,使用 history.js 到达相同的滚动位置
【发布时间】:2014-05-27 22:03:55
【问题描述】:

我想实现一个功能,在单击后退按钮时,我会回到相同的位置。一个很好的例子可能是任何电子商务网站。当我们向下滚动并点击一个产品,然后从产品页面点击返回时,我们应该到达该产品所在页面的相同位置。

我们使用 history.js 来查找 hashchange 和 pushstate 来保存条目。 但是当我点击后退按钮时,它会加载到页面顶部而不是项目滚动位置。此外,我们主要使用 AJAX 加载数据

我对 jquery、ajax 还很陌生,所以不知道如何设置滚动位置,在单击后退按钮时保存和加载。

任何帮助都会很棒!

谢谢

【问题讨论】:

  • 如果您使用pushState,您可以将任何信息推送到您想要的堆栈中。这可能包括可滚动视图的 scrollTop,然后阅读它onpopstate
  • 好的,不改变history.pushState,我还能得到点击项的scrollTop并保存吗

标签: javascript jquery ajax model-view-controller history.js


【解决方案1】:

我最近使用$(document).scrollTop() 实现了类似的功能,并在离开页面时将该数字存储在cookie 中。我的用例不是 ajaxy,但同样的想法可以很容易地用 History.js 的事件替换页面加载事件来适应,并且无需为持久性而烦恼 cookie;正如上面@Kyle 在他的 cmets 中提到的,History.js 允许您使用 pushState 存储数据,当您返回该状态时返回该数据。

查看 jQuery 的文档:http://api.jquery.com/scrolltop/

【讨论】:

  • 好的。那么我将如何在产品重定向到 secondPage 之前检索产品的 scrollPosition。这样我就可以使用相同的scrollPosition 来访问firstPage?此外,在使用此功能时,分页会影响后退按钮导航 - 当我考虑单个页面时,我会单击 viewmore 以显示更多数据
  • 我在做这个
    'code' function scrollTo(toId) { try { var targetOffset = jQuery("#" + toId).offset(); var targetTop = targetOffset.top; jQuery('html, body').delay(100).animate({ scrollTop: targetTop }, 'slow'); } catch(e) { } } – <br> 在这个函数中,我不明白如何捕获滚动位置并将其传递到这里。我有一个 div,它有多个 div,每个 div 都有一个项目列表。 <br><br> 我应该如何为每个列表项获得点击时的位置?谢谢
猜你喜欢
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 2021-04-04
  • 2018-04-28
  • 2023-04-11
  • 2021-09-29
  • 1970-01-01
相关资源
最近更新 更多