2012-05-01 73 views
5

我有一個頁面,它將整個瀏覽器的屏幕作爲過渡動畫。它工作正常,但是當用戶點擊瀏覽器中的後退按鈕時,Firefox會彈出沒有正文的歷史記錄中的緩存頁面。通過單擊Firefox中的後退按鈕訪問頁面時重新加載頁面

因此,當我通過後退按鈕訪問頁面時,我很容易重新加載頁面。

我試了下面的代碼來重新加載頁面,以避免重新加載。

<script type="text/javascript"> 
    window.onload=function(){ 
    var e=document.getElementById("refreshed"); 
    if(e.value=="no")e.value="yes"; 
    else{e.value="no";location.reload();} 
    } 
</script> 
<input type="hidden" id="refreshed" value="no"> 

它沒有解決問題,因爲匿名函數甚至沒有被調用。

所以我嘗試設置標題,以便瀏覽器不會緩存頁面。

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"> 
<meta http-equiv="Pragma" content="no-cache"> 
<meta http-equiv="Expires" content="0"> 

它也沒有解決問題。

該頁面在Chrome中正常工作。

的Firefox的版本我用的是12.0

我怎樣才能在網頁使用Javascript,JQuery的或任何其他客戶端腳本重裝?

+0

我不認爲這在鉻中工作,值始終爲'no' –

+0

在鉻中,匿名函數被調用,頁面不會被重新加載。但仍然因爲頁面沒有被緩存,所以沒關係。 我的問題是,在Firefox中,函數甚至沒有被調用。 – mahesmohan

回答

5

在導航返回到內存中緩存頁面時,沒有onload事件觸發。

你有三個主要的選擇,我想:

  1. 使用onpageshow事件(導航到緩存的頁面時確實火)。
  2. 通過添加卸載事件監聽器 (它可以只是一個空函數)來防止頁面在內存中緩存。
  3. 不要做惱人的卸載動畫。
+0

即使我討厭惱人的卸載動畫,但我正在爲此專門請求卸載動畫的客戶端。非常感謝鮑里斯。 – mahesmohan

+0

啊,是的。客戶有點像這樣的PITA。 ;) –

+0

+1。 *「通過添加一個卸載事件監聽器來防止頁面內存緩存」*,這很好地解決了這個問題。這裏有一些[文檔](https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching)。 – Qtax

0

我沒有嘗試它,但setTimeout可能會有所幫助。

<script> 
setTimeout(function() { 
var e=document.getElementById("refreshed"); 
    if(e.value=="no")e.value="yes"; 
    else{e.value="no";location.reload();} 
}, 1000); 
</script> 
相關問題