2009-11-07 118 views
1

我正在使用Jquery創建一個動態div,我試圖緩存它,以便在頁面刷新後將其恢復,請幫助解決如何實現這一點,如何在頁面刷新後保留div內容

粘貼下面

<script src="jquery-1.3.2.js" type="text/javascript"></script> 
<script src="jQuery.jCache.js" type="text/javascript"></script> 
<script type="text/javascript" language="javascript"> 
    $.jCache.maxSize = 20; 
    function createDiv() { 

     var divTemp = "<div><label>This is a Label</Label></div>"; 
     alert(divTemp); 
     $(divTemp).appendTo("#divDisplay"); 
     $.jCache.setItem("myKey", divTemp); 
    } 

    $(document).ready(function() { 


    if ($.jCache.hasItem("myKey")) { 
     var cacheDiv = $.jCache.getItem("myKey"); 
      var cacheDiv = cacheDiv + "<a>anchor Tag</a>"; 
      $(cacheDiv).appendTo("#divDisplay"); 

     } 
    }); 
</script> 

代碼

我想在頁面中使用按鈕單擊繪製一個div,點擊div在頁面中繪製後,當它使用F5單擊刷新後,div消失,是否有任何方法使用緩存機制保留div內容?

這是我的整個功能showstopper!

由於提前, Shajo

回答

3

最好的辦法是跟蹤div內容服務器端。這樣每次用戶更新div的內容時,AJAX調用都可以更新div的服務器端表示。

當頁面首次加載時,服務器可以預先填充div。然後它看起來好像頁面在重新加載之後保留div的內容。

這種類型的功能現在在許多網站中使用,所以我相信它可以適用於您的方案。看看這個網站(SO)。當你投票時,你基本上會改變瀏覽器上的東西,投票箭頭的顏色。如果在顏色沒有恢復後刷新,它會以某種方式記住你投了票。這是因爲當你點擊投票箭頭時,AJAX調用已經完成,並且你投票的事實被記錄在服務器上。

6

你可能誤會JCACHE的工作方式。無論何時(重新)加載頁面,緩存都會被有效地清除,因爲瀏覽器會啓動一個新的JavaScript執行環境。這種瀏覽器行爲是有道理的,因爲它可以防止不同網站上的JS不能互相交互,從而造成一個很大的安全漏洞。如果玩弄jCache demo,則可以通過填充演示緩存,重新加載頁面以及注意緩存爲空格來測試此行爲。

至於你的特定應用程序,你需要(重新)設計它,使得重載不是必需的。這實際上是Ajax的重點。我嚴重懷疑這是你的一個表演塞。在最壞的情況下,當用戶重新加載頁面時,您應該能夠重新生成動態div。如果您需要記住一些狀態才能重新生成div,則Cookie可能適用於您。