2012-08-12 134 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