我服很长的html页面(短电子书)维护大HTML页面的滚动位置时,客户端返回
当客户的回报,太麻烦,试图找到准确的地方不放过由于长期html页面。
有一个简单的方法来自动保持滚动位置下一次,所以客户端会自动返回到该页面的页面滚动到他离开的地方。 这需要是透明的,即不需要点击以“存储”滚动位置。
我服很长的html页面(短电子书)维护大HTML页面的滚动位置时,客户端返回
当客户的回报,太麻烦,试图找到准确的地方不放过由于长期html页面。
有一个简单的方法来自动保持滚动位置下一次,所以客户端会自动返回到该页面的页面滚动到他离开的地方。 这需要是透明的,即不需要点击以“存储”滚动位置。
你总是可以使用onbeforeunload事件来检查时,被关闭的窗口,并设置与当前位置的cookie。比每次加载页面时都要检查是否设置了该cookie。如果是 - 使用该值将用户重定向到保存的位置。
更新
你应该明白,以使其发挥作用的概念。您可以阅读关于cookie以及如何在javascript here中与它们交互的信息。该链接包含一个现场示例。
的onunload的和onbeforeunload是您可以使用您的网页时被关闭,以检测JavaScript事件。你应该谷歌他们是什么以及如何使用它们。
您可以检查this stack-overflow question以获得如何跳转到特定偏移量的答案,并可登录this one查看如何检索它。
我给你所有的拼图,这取决于你把它们放在一起。
你也可以使用'localStorage'。 – Charlie 2013-05-05 21:08:15
查理绝对就在这里。事实上,在给定的情况下,这种方法似乎更加优越这里是比较2种方法的链接:http://stackoverflow.com/questions/3220660/local-storage-vs-cookies。只是为了确保您不会感到困惑:本地存储是解决方案“cookie”部分的另一种替代方案。 – 2013-05-05 21:11:01
步骤很简单,但解决这一问题取决于你的应用程序实现,您可以:
检索当前的滚动位置,你可以使用:
window.pageYOffset
存储位置,这有两部分,时间和地点:
你可以选择来存储数据,当窗口关闭,或每次用户滚动,或在设定的时间间隔......
的“里”,这取决于你的应用程序,你可能想其存储在一个cookie,本地存储,服务器端(如果用户需要登录到阅读电子书)...
恢复位置,当用户返回时,通过检索存储的数据,并滚动到该位置使用
window.scrollTo(0, position);
所以这里真正的问题是,什么时候和在哪里存储的位置,而取决于你的应用。
我制作了一个小的jquery插件,你可以包含这个功能而不用cookies等。在之前包括身体标签的结尾。
<script type="text/javascript" src="/js/maintainscroll.jquery.min.js"></script>
</body>
为什么不加一个隐藏字段来存储滚动位置,并将其设置在提交之前...然后从隐藏字段的onload加载它? – canon 2013-05-05 20:26:37
没有提交。它只是直读html – 2013-05-05 20:31:20