2012-08-12 135 views
0

我有以下脚本的HTML:火狐刷新

<script type="text/javascript"> 
    function doRefreshWithInterval() { 
     setTimeout("doRefresh()", 60000); 
    } 

    function doRefresh() { 
     window.location.reload(true); 
    } 

    if (window.location.href.indexOf("Dashboard.jspa") >= 0) { 
     doRefreshWithInterval(); 
    } 
</script> 

为了使页面定期刷新。问题是,当我向下滚动页面(这是一个很长的页面),刷新发生在某些浏览器(特别是Firefox)浏览器页面顶部而不是我所在的位置。有什么办法可以防止这种情况发生,并且让Firefox在刷新后滚动到最后一个位置?

+2

['setTimeout'](https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout)的非字符串形式将是一个更好的主意:'setTimeout(doRefresh,60000) ;' – 2012-08-12 04:13:08

回答

2

实际上,您只需对现有代码进行一次微小的更改即可。将document.location.reload(true);更改为document.location.reload();

使用true您强制浏览器再次从服务器获取页面,这意味着您的位置将会丢失。当您删除true时,浏览器从缓存中加载页面,保留您在页面上的位置。

但是,如果您自动重新加载页面的原因是为了获取服务器可能已修改的最新版本页面,这可能没有帮助。

使用Firefox 12.0中的Firebug进行测试。

+0

你不觉得对差异的解释会对OP有帮助吗?就像也许如何使用“真”从服务器抓取页面而不是缓存? – Ian 2012-08-12 04:50:07

3

这使我想起一个解决方案是:

  1. 刷新之前,让页面
  2. 存储在cookie中数
  3. 刷新
  4. 在页面加载,看到的垂直位置如果页面位置有一个cookie
  5. 通过脚本滚动到该位置
+1

或者,您可以重定向到一个带有滚动位置的查询参数的URL。即使没有饼干也可以工作。 – jfriend00 2012-08-12 04:52:26

+0

2. - 或者将scrollTop值存储在localStorage中,3. - 在页面加载时检索后从localStorage中删除值。 – 2012-08-12 05:01:33

+0

那我该怎么做呢? – 2012-08-12 05:57:55