2009-11-07 93 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可能适用于您。