web storage sessionStorage与localStorage的使用

在HTML 5中,除了Canvas元素之外,另一个新增的非常重要的功能是可以在客户端本地保存数据的Web Storage功能。我们知道,在HTML 4中可以使用cookie在客户端保存诸如用户名等简单的用户信息,但是,通过长期的使用,人们发现,用cookie储存永久数据存在以下几个问题。
大小:cookie的大小被限制在4KB。
带宽:cookie是随HTTP事务一起被发送的,因此会浪费一部分发送cookie时使用的带宽。
复杂性:要正确地操纵cookie是很困难的。
针对这些问题,在HTML 5中,重新提供了一种在客户端本地保存数据的功能,它就是Web Storage功能。
Web Storage功能,顾名思义,就是在Web上存储数据的功能,这里的存储是针对客户端本地而言的。具体来说,Web Storage又分为两种:
sessionStorage
将数据保存在session对象中。所谓session,是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。session对象可以用来保存在这段时间内所要求保存的任何数据。
localStorage
将数据保存在客户端本地的硬件设备(通常指硬盘,也可以是其他硬件设备)中,即使浏览器被关闭了,该数据仍然存在,下次打开浏览器访问网站时仍然可以继续使用。
这两者的区别在于,sessionStorage为临时保存,而localStorage为永久保存。
到目前为止,Firefox 3.6以上、Chrome 6以上、Safari 5以上、Opera 10.50以上、IE 8以上版本的浏览器支持sessionStorage与localStorage的使用。

例一:web storage示例

	<h1>web storage示例</h1>
	<p id="msg"></p>
	<input type="text" id="input" name="">
	<input type="button" value="保存数据" onclick="saveStorage('input');">
	<input type="button" value="读取数据" onclick="loadStorage('msg');">

	//sessionStorage 示例
	function saveStorage(id){
		var target = document.getElementById(id);
		var str = target.value;
		sessionStorage.setItem("message",str);
		//或sessionStorage.message=str;
	}

	function loadStorage(id){
		var target = document.getElementById(id);
		var msg = sessionStorage.getItem("message");
		//或var msg=sessionStorage.message;
		target.innerHTML = msg;
	}
// localStorage示例
function saveStorage(id)
{
    var target = document.getElementById(id);
    var str = target.value;
    localStorage.setItem("message",str);
    // 或localStorage.message=str;
}
function loadStorage(id)
{
    var target = document.getElementById(id);
    var msg = localStorage.getItem("message");
    //或var msg=localStorage.message;
    target.innerHTML = msg;
}

例二:简单Web留言本

效果图如下:

<h1>简单Web留言本</h1>
<textarea id="memo" cols="60" rows="10"></textarea><br>
<input type="button" value="追加" onclick="saveStorage('memo');">
<input type="button" value="初始化" onclick="clearStorage('msg');">
<hr>
<p id="msg"></p>
function saveStorage(id){
	var data = document.getElementById(id).value;
	var time = new Date().getTime();
	localStorage.setItem(time,data);
	alert("数据已经保存");
	loadStorage('msg');
}

function loadStorage(id){
	var result = '<table border="1">';
	for(var i = 0;i<localStorage.length; i++){
		var key = localStorage.key(i);
		var value = localStorage.getItem(key);
		var date = new Date();
		date.setTime(key);
		var datastr = date.toGMTString();
		result += '<tr><td>' +value+ '</td><td>' +datastr+'</td></tr>';
	}
	result += '</table>';
	var target = document.getElementById(id);
	target.innerHTML = result;
}

function clearStorage(){
	localStorage.clear();
	alert("全部数据被删除");
	loadStorage('msg');
}