Php 访问另一页后保留浏览器滚动位置

Php 访问另一页后保留浏览器滚动位置,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我正在使用JS、JQuery和PHP,试图解决一个无限滚动问题。问题是,如果您沿着页面向下滚动很长一段时间,并且它使用ajax加载了更多页面,然后单击链接转到新页面,那么在使用新页面上的“浏览器后退”按钮时,如何自动转到旧页面中的同一位置 。使用ajax在scroll上加载新页面。您可以获得$(window).scrollTop();值,然后将其保存为php中名为“pageTop”的变量,并在DOM就绪时调用它: $(window).load(function() { $(window)

我正在使用JS、JQuery和PHP,试图解决一个无限滚动问题。问题是,如果您沿着页面向下滚动很长一段时间,并且它使用ajax加载了更多页面,然后单击链接转到新页面,那么在使用新页面上的“浏览器后退”按钮时,如何自动转到旧页面中的同一位置

。使用ajax在scroll上加载新页面。

您可以获得$(window).scrollTop();值,然后将其保存为php中名为“pageTop”的变量,并在DOM就绪时调用它:

$(window).load(function() {
    $(window).scrollTo(pageTop);
});

让我知道这是怎么回事。

对于我的问题,我想出的解决方案是在离开页面之前将每个页面与相关数据一起存储

保持滚动位置需要以下信息:

  • 页面ID(页面唯一)
  • 页面数据(所有页面均为html,小心过期的数据)
  • 分页页码(仅当此页面为提要时适用)
  • 当前X、Y滚动位置
  • 时间戳
加载下一页时,可以使用本地存储器存储以前的信息。返回上一页时,请在存储器中查找PageID。如果存在,则抓取X或Y坐标并将页面移动到该位置。这需要一些战略思考,因为如果页面是延迟加载(无限滚动)类型的页面或提要,那么您需要已经有数据,或者准备根据页面的位置查找数据


构建这个系统最简单的方法是,如果您的整个站点都是基于javascript的,并且您使用的是HTML5历史Api。防止重新加载整个页面有助于减轻服务器的负担。如果您担心某些过期数据的更新,您可以将页码发送到服务器并获取相应的数据以填充过期内容。

我希望Facebook能够实现这一点。每次您的ajax获得新内容时,您都必须在会话中保存当前加载的状态。然后,当用户访问其他站点并返回到以前的站点时,您只需加载以前的状态并滚动到它。@ITroubs interest。因此,对于这种类型的实现,您是否看到了任何缺点?如果页面有10000-15000行html呢?这是一个缺点。你所能做的就是在用户之前所在的位置加载一定数量的数据,如果用户想“滚动”,你就给他机会“重新加载”上一部分。(如果你知道我的意思)使用TurboLink这样的脚本怎么样?不过,更大的问题是,在没有ajax加载所有页面的情况下,如何实现这一点。如果你像facebook一样加载你的内容,并且用户处于加载的第10步,这将不会有帮助。如果您只是滚动到第10个“页面”,这将失败,因为它不存在于您的html YetItem中。我认为window.load等待FB加载。试一试。这是没有用的,除非你告诉浏览器在滚动之前重新加载所有动态数据。没错,我误解了这个问题。ITroubs对这个问题的评论是正确的做法。