2013-06-24 90 views
0

我只有Firefox的麻煩。我的頁面顯示了一個通過ajax加載的樹形結構,因爲用戶點擊了他們想要展開的節點。我遇到的問題是使用firefox,而且只有firefox,它會在第一次加載頁面時擴展節點。但之後,Firefox的緩存奇怪的是,Ajax請求的節點標題,而不是子節點會轉到新頁面。這是一個問題,因爲繼承的節點頭包含確定節點是否檢索到它的子節點的信息。Firefox bfcache問題?

<div class="node topbar" 
    <input type="hidden" id="foo" name="hasretrievedchildren" value="1"/> 
... 
</div> 

它應該像第一頁加載一樣。

<div class="node topbar" 
    <input type="hidden" id="foo" name="hasretrievedchildren" value="0"/> 
... 
</div> 

我的Javascript檢查輸入的非零值來做AJAX調用。

這是一個bfcache的問題? 我帶領相信這不是因爲我加

window.onunload = function(); 

JS文件和腳本標籤和沒有固定它本文要 https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching 說,應該無效bfcache。

我使用asp.net MVC 4,我嘗試使用MVCdonutcaching設置此頁面和部分視圖不緩存。但是那也行不通。

回答

0

我能解決這個問題。 Firefox會隱藏所有表單數據甚至隱藏的輸入。由於我使用隱藏字段來存儲啓用AJAX請求的標誌,它將重新加載標誌設置的表單數據。我將它移動到一個自定義屬性,它的工作原理與它應該完全一樣。

0

也許這是bfcache,也許它不是。 前段時間我不得不面對同樣的問題。瀏覽器緩存在我們的表單上造成了一些奇怪的行爲,並且影響了頁面的預期結果。 解決問題的方法爲了使程序加載總是正確的值(假設您正在加載它),您可以執行的操作是通過Javascript初始化該值。

如果您使用JQuery,你應該使用:

<script type="text/javascript"> 
    $(document).ready(){ 
     //Assign your items values here 
    } 
<script> 

您還可以使用onload處理的JS。

希望這會有所幫助。