通常在具有无限滚动的页面上您可能会遇到以下情况:
你如何处理这些情况?你知道任何解决方案吗?有没有办法保存页面状态或至少知道这种情况是什么,并加载适当的无限列表和滚动用户到最后看到的项目。
答案 0 :(得分:3)
当某个条件为true时滚动时,必须以某种方式加载要附加到页面的新内容,例如,您调用带有ajax调用的某个页面。假设您每次加载更多数据时都会加载十个项目。因此,您当前的状态可能是您加载10个项目的次数。你可以保存那些信息,例如通过使用锚:
www.site.tld/index.php?id=999#load_counter=5
另一种可能性是用cookie保存它。您可以尝试在哪个时间“保存”该数据是最佳的。例如。在每次AJAX调用之后或使用onbeforeunload
事件离开页面时。
加载页面后,您可以检查Cookie或网址中是否有可用的元数据。如果有,您可以通过发送加载之前加载的列表元素的AJAX请求来精确加载该内容。在我的例子中,这将是
5 * 10
因为load_counter
是5而且每次加载时都会加载10个项目。你也可以重建位置。要么保存how much the user has scrolled的信息,要么只是猜测假设用户正在查看最后一批已加载的项目。例如。你可以滚动到元素(5-1)*10
。这是最后一批的第一个元素。
答案 1 :(得分:2)
这是一个相当不明确的开放式问题,但让我分享一些想法:
您返回的页面重新加载(并因此重置)的一个原因是它禁止浏览器缓存它。如果包含滚动的页面绝对 没有pragma:no-cache等,那么请尝试不使用。这可能已经解决了问题,因为允许浏览器返回上一个已知状态。
如果这不起作用,或者您需要确保每个页面加载都有新数据,那么解决方案将取决于您的内容和框架。也许您可以将状态服务器端存储在会话中并相应地重建页面,或者您可以使用引用设置cookie,并在重新加载时让一些客户端脚本轮询到该点。
除此之外,我可以说的是,大多数无限滚动框架只是说"嗯,这是一个问题",句号。然后另一种方法是使用明确的分页。