我正在使用Jquery创建一个动态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,在页面中绘制click div后,当使用F5单击刷新它时,div消失,是否有任何方法可以使用缓存保留div内容机制是什么?
这是我整个功能的一个显示器!
提前致谢, Shajo
答案 0 :(得分:6)
您可能误解了jCache的工作方式。每当您(重新)加载页面时,缓存都会被有效地消除,因为浏览器将启动一个新的JavaScript执行环境。这种浏览器行为是有道理的,因为它阻止了不同网站上的JS能够相互交互,从而产生了一个巨大的安全漏洞。如果您使用jCache demo,可以通过填充演示缓存,重新加载页面并注意缓存是空的来测试此行为。
至于您的特定应用程序,您需要(重新)设计它,以便不需要重新加载。这实际上是Ajax的重点。我非常怀疑这对你来说是个噱头。在最坏的情况下,您应该能够在用户重新加载页面时重新生成动态div。如果你需要记住一些状态才能重新生成div,那么cookie可能适合你。
答案 1 :(得分:3)
最好的办法是跟踪div内容服务器端。这样每次用户更新div的内容时,都可以通过AJAX调用更新div的服务器端表示。
当页面第一次加载时,您的服务器可以预先填充div。然后看起来好像页面在重新加载后保留div的内容。
此类功能现已在众多网站中使用,因此我确信它可以适用于您的方案。看看这个网站(SO)。当您投票时,您实际上是在浏览器上更改某些内容,即投票箭头的颜色。如果你在颜色没有恢复后刷新,它会以某种方式记住你投了票。那是因为当您单击投票箭头时,会进行AJAX调用,并且您投票的事实将记录在服务器上。
答案 2 :(得分:2)
尝试使用Cookie http://plugins.jquery.com/project/cookie