浏览器持久滚动位置

时间:2015-03-31 14:31:42

标签: javascript jquery html css browser

当我使用firefox并在无限滚动div中滚动并重新加载页面时,我会滚动回到上一个会话滚动位置。

这是live test页面。

可以通过以下步骤重现该错误。

第一。在Firefox上加载页面。
第2位。点击“点击我”文字。
3。将列表向下滚动到页面的中间位置 4。重新加载页面“没有”清除缓存 第5位。再次点击“点击我”文字。
6。观察位置。

我知道如何通过使用PHP对网站进行版本控制来解决这个问题,但我还想采用另一种方式。

3 个答案:

答案 0 :(得分:1)

文档准备好后,$(this)引用window.document,当我们执行$(this).scrollTop(0);时,它会将滚动条带到窗口对象的顶部位置。尝试这样的事情:

$(document).ready(function(){
    $(this).scrollTop(0);
});

答案 1 :(得分:0)

我认为你无法访问它。

您需要为要深层链接的每个元素提供ID,以便您可以引用它。例如:

$('#target').append('<li id="result'+i+'">Item'+i+'</li>');

滚动时将结果添加到结尾称为无限滚动。

滚动时,您需要在网址中记录#fragment或使用history.pushState()更新网址。有一些关于在这个帖子中存储这些信息的两种方式的讨论:

当用户返回页面时,您应该在页面加载中执行此操作:

  1. 检查您是否有要滚动到
  2. 的结果
  3. 加载结果数以便目标存在
  4. 使用某种平滑滚动将用户向下移动到该结果

答案 2 :(得分:0)

我找到解决firefox缓存问题的唯一可行方法是&#34; Versioning&#34;。版本控制强制浏览器从服务器而不是缓存中获取页面。

通过为每次想要获取的网址提供get参数,可以轻松完成此操作。 执行此操作的简单代码如下:

<?php
   <a href="your/url.com?v=".time()> a random text </a>
?>

此外,您还必须在目标页面上进行版本控制。这也是要做的。

<?php 
   if(isset($_GET['v']) && $_GET['v']!=time()){
      header("location: your/url.com?v=".time());
   }
?>

以前的代码检查&#34; GET&#34;参数&#34; v&#34;已设置且不等于Now Timestamp 如果是这样,则Web服务器将用户重定位到同一页面,但使用更新的参数,从而从服务器而不是缓存请求页面。

这是通过php以编程方式强制清除缓存的唯一方法。