2013-05-05 58 views
13

我服很长的html页面(短电子书)维护大HTML页面的滚动位置时,客户端返回

当客户的回报,太麻烦,试图找到准确的地方不放过由于长期html页面。

有一个简单的方法来自动保持滚动位置下一次,所以客户端会自动返回到该页面的页面滚动到他离开的地方。 这需要是透明的,即不需要点击以“存储”滚动位置。

+0

为什么不加一个隐藏字段来存储滚动位置,并将其设置在提交之前...然后从隐藏字段的onload加载它? – canon 2013-05-05 20:26:37

+0

没有提交。它只是直读html – 2013-05-05 20:31:20

回答

7

你总是可以使用onbeforeunload事件来检查时,被关闭的窗口,并设置与当前位置的cookie。比每次加载页面时都要检查是否设置了该cookie。如果是 - 使用该值将用户重定向到保存的位置。

更新

你应该明白,以使其发挥作用的概念。您可以阅读关于cookie以及如何在javascript here中与它们交互的信息。该链接包含一个现场示例。

的onunload的和onbeforeunload是您可以使用您的网页时被关闭,以检测JavaScript事件。你应该谷歌他们是什么以及如何使用它们。

您可以检查this stack-overflow question以获得如何跳转到特定偏移量的答案,并可登录this one查看如何检索它。

我给你所有的拼图,这取决于你把它们放在一起。

+1

你也可以使用'localStorage'。 – Charlie 2013-05-05 21:08:15

+0

查理绝对就在这里。事实上,在给定的情况下,这种方法似乎更加优越这里是比较2种方法的链接:http://stackoverflow.com/questions/3220660/local-storage-vs-cookies。只是为了确保您不会感到困惑:本地存储是解决方案“cookie”部分的另一种替代方案。 – 2013-05-05 21:11:01

13

步骤很简单,但解决这一问题取决于你的应用程序实现,您可以:

  • 检索当前的滚动位置,你可以使用:

    window.pageYOffset

  • 存储位置,这有两部分,时间和地点:

    • 你可以选择来存储数据,当窗口关闭,或每次用户滚动,或在设定的时间间隔......

    • 的“里”,这取决于你的应用程序,你可能想其存储在一个cookie,本地存储,服务器端(如果用户需要登录到阅读电子书)...

  • 恢复位置,当用户返回时,通过检索存储的数据,并滚动到该位置使用

    window.scrollTo(0, position);

所以这里真正的问题是,什么时候和在哪里存储的位置,而取决于你的应用。

相关问题