当前位置: 代码迷 >> Web前端 >> 复辟客户端存储 - SessionStorage
  详细解决方案

复辟客户端存储 - SessionStorage

热度:156   发布时间:2012-10-06 17:34:01.0
颠覆客户端存储 --- SessionStorage
在上一篇文章“颠覆客户端存储 --- LocalStorage”中,我们使用了一个简陋的 textarea 编辑器了解了 localStorage 的相关内容。这里,我们将通过一个与之近乎完全一样的例子来了解一下 HTML5 提供的另一个客户端存储解决方案 --- SessionStorage,之后再来比一下两者间细微的区别。那么我们先来还原上一次的例子,首先是准备HTML代码,它同样包含一个 textarea 和两个按钮:

<textarea id="editor"></textarea>
<p>
<input type="button" value="保存" id="save" />
<input type="button" value="清除" id="clear" />
</p>
接下来是 JavaScript,注意,这里使用了sessionStorage 来替代之前的 localStorage:

var editor = document.getElementById("editor");
editor.value="";
var save = document.getElementById("save");
var clear = document.getElementById("clear");

save.onclick = function(){
sessionStorage.setItem('text',editor.value);
}
clear.onclick = function(){
if(confirm("确定清除您的编辑记录?")){
sessionStorage.removeItem('text');
}
}


var text = sessionStorage.getItem('text');
if(text.length){
editor.value = text;
}
在上面的代码中,保存按钮被添加一个 click 事件用以获取 textarea 的值并通过 setItem 方法进行存储,而清除按钮则相反,它通过 removeItem 方法移除了已经存储的数据(如果存在)。当页面加载的时候,从 sessionStorage 中读取内容并添加到 textarea 中。这样,一个带有“记忆”功能的编辑器就完成了。如果仔细看过上一篇文章,那么这里的代码太容易理解了,下面是这个例子的最终效果:


 

您没有已保存的编辑

与 localStorage 的异同

也许足够细心的盆友通过运行上面的例子已经发现了 sessionStorage 和 localStorage 的区别。是的,在这个例子中,数据的存储仅特定于某个会话中,也就是说数据只保持到浏览器关闭,当浏览器重新打开并进入这个页面时,之前的存储已经被清除。而 localStorage 是一个持久化的存储,它并不局限于会话。

尽管页面关闭会导致存储于 sessionStorage 的数据被清除,但是它可以跨越页面的刷新而存在,并且在除了 IE 的浏览器中,浏览器崩溃同样不会清除 sessionStorage 的数据。如果需要存储的只是少量的临时数据,那么 sessionStorage 非常的合适,不必再刻意地清除数据。

由于 sessionStorage 和 localStorage 的存储类型实质上同属于 Storage,所以他们都具有相同的方法,开发过程中无需为两者实现方式不同而苦恼,这是一个好消息。
  相关解决方案