记住HTML文档上的最后一个滚动位置以便重用

时间:2015-11-06 15:08:07

标签: javascript jquery

我有一个名为“课程阅读器”的东西。它是一个大的HTML文档,可以包含文本,图像,YouTube视频,soundcloud音频等。大多数东西是从EPUB文档等外部源导入的,因此我对HTML及其生成方式没有多少控制权。我需要创建记住用户所在文档的最后位置的能力,所以当下次加载文档时(可能不是同一个浏览器或同一个设备),我可以带用户那个位置。

我认为有用的一点是:用$(window).scrollTop()获取当前的顶部位置,但由于不同的浏览器会有所不同,我想我会将该值保存为整个文件高度。所以,如果此时我占文档的45%,那么在下一次加载时我得到45%,重新计算当前文档高度的像素数并滚动到那里。但是,这不是一个解决方案,因为它在Chrome和Firefox中甚至不会起作用。

重要的是用户可以从桌面浏览器打开文档,下次从手机或平板电脑打开文档,我仍然需要将它们移动到上次保存的位置。

我厌倦了其他一些不值得一提的事情,我没有想法。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

你说你无法控制HTML及其生成方式,但如果最终你有一个简单的HTML文档,你可以使用JavaScript(在你的问题中标记的jQuery更简单) ),你仍然可以通过操纵DOM在客户端重新考虑它。

你应该能够遍历DOM,在这里和那里插入隐藏的锚点(例如每两个单词),并在每个用户滚动中检测屏幕内最上面的锚点,以便您可以将该锚点记录为“上次查看用户位置”。

当然,您的插入方法必须在所有设备上保持一致且可重现,以便它以完全相同的方式重新计算DOM,并且锚点每次都放置在完全相同的位置。所以不要使用随机id作为锚点。例如。您可以使用带前缀的计数器,只需要确保它不会与预先存在的ID冲突。