HTML5 本地存储 localStorage、sessionStorage 的遍历、存储大小限制处理

HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localStorage 则会一直保存。我们这里以 localStorage 为例,简要介绍下 HTML5 的本地存储,并针对如遍历等常见问题作一些示例说明。 localStorage 是 HTML5 本地存储的 API,使用键值对的方式进行存取数据,存取的数据只能是字符串。不同浏览器对该 API 支持情况有所差异,如使用方法、最大存储空间等。

1. localStorage API 基本使用方法

localStorage API 使用方法简单易懂,如下为常见的 API 操作及示例: 设置数据:localStorage.setItem(key,value); 示例:

for(var i=0; i<10; i++){
	localStorage.setItem(i,i);
}

获取数据:localStorage.getItem(key) 获取全部数据:localStorage.valueOf() 示例:

for(var i=0; i<10; i++){
	localStorage.getItem(i);
}

删除数据:localStorage.removeItem(key) 示例:

for(var i=0; i<5; i++){
	localStorage.removeItem(i);
}

清空全部数据:localStorage.clear() 获取本地存储数据数量:localStorage.length 获取第 N 个数据的 key 键值:localStorage.key(N)

2. 遍历 key 键值方法

for(var i=localStorage.length - 1 ; i >=0; i--){
	console.log(‘第‘+ (i+1) +‘条数据的键值为:‘ + localStorage.key(i) +‘,数据为:‘ + localStorage.getItem(localStorage.key(i)));
}

3. 存储大小限制测试及异常处理

3.1 数据存储大小限制测试

不同浏览器对 HTML5 的本地存储大小基本均有限制,一个测试的结果如下:

IE 9          > 4999995 + 5 = 5000000
firefox 22.0 > 5242875 + 5 = 5242880
chrome  28.0  > 2621435 + 5 = 2621440
safari  5.1   > 2621435 + 5 = 2621440
opera   12.15 > 5M (超出则会弹出允许请求更多空间的对话框)

测试代码参考:

<!DOCTYPE html>
<html>
<head>
<script>
	function log( msg ) {
	    console.log(msg);
	    alert(msg);
	}

	var limit;

	var half = ‘1‘; //这里会换成中文再跑一遍
	var str = half;
	var sstr;

	while ( 1 ) {
	    try {
	        localStorage.clear();
	        str += half;
	        localStorage.setItem( ‘cache‘, str );
	        half = str;
	    } catch ( ex ) {
	        break;
	    }
	}

	var base = str.length;
	var off = base / 2;
	var isLeft = 1;

	while ( off ) {
	    if ( isLeft ) {
	        end = base - (off / 2);
	    } else {
	        end = base + (off / 2);
	    }

	    sstr = str.slice( 0, end );
	    localStorage.clear();
	    try {
	        localStorage.setItem( ‘cache‘, sstr );
	        limit = sstr.length;
	        isLeft = 0;
	    } catch ( e ) {
	        isLeft = 1;
	    }

	    base = end;
	    off = Math.floor( off / 2 );
	}

	log( ‘limit: ‘ + limit );

</script>
</html>

3.2 数据存储异常处理

try{
	localStorage.setItem(key,value);
}catch(oException){
	if(oException.name == ‘QuotaExceededError‘){
		console.log(‘超出本地存储限额!‘);
		//如果历史信息不重要了,可清空后再设置
		localStorage.clear();
		localStorage.setItem(key,value);
	}
}
时间: 2024-10-13 10:43:26

HTML5 本地存储 localStorage、sessionStorage 的遍历、存储大小限制处理的相关文章

HTML5 Web存储--localStorage/sessionStorage

HTML5提供了2种在客户端存储的方法: 1.localStorage--没有时间限制的数据存储 2.sessionStorage --针对一个session的数据存储,会话结束时会被清空 一.作用域 作用域 localStorage在相同的协议.主机名.端口下,就能读取/修改到同一份localStorage数据 sessionStorage在上述的条件下还要求在同一个窗口,也就是只要关闭了浏览器(包括关闭标签页),就会被清空 二.VS cookie: 1.存储数据更多 ( cookie只有4k

HTML5本地缓存localStorage和sessionStorage的操作方法收集

说明: Web Storage 包含如下两种机制: sessionStorage 为每一个给定的源(given origin)维持一个独立的存储区域,该存储区域在页面会话期间可用(即只要浏览器处于打开状态,包括页面重新加载和恢复). localStorage 同样的功能,但是在浏览器关闭,然后重新打开后数据仍然存在. 这两种机制是通过 Window.sessionStorage 和 Window.localStorage 属性使用(更确切的说,在支持的浏览器中 Window 对象实现了 Wind

&lt;&lt;&lt; html5本地储存

类似与Cookies,但由于Cookies储存量太小,大小也只有4-5KB的样子,html5的本地储存能存5M大小的数据 html5本地储存属性有,localStorage和sessionStorage,localStorage代表储存在本地,sessionStorage后面是随着session,窗口关闭即消失 设置html5本地储存 localStorage.value = 1;//设置value 为"1"localStorage["user"] = "

HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等

HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localStorage 则会一直保存.我们这里以 localStorage 为例,简要介绍下 HTML5 的本地存储,并针对如遍历等常见问题作一些示例说明. localStorage 是 HTML5 本地存储的 API,使用键值对的方式进行存取数据,存取的数据只能是字符串.不同浏览器对该 API 支持情况有所差

HTML5本地存储-localStorage和sessionStorage

HTML5WebStorage本地存储 WebStorage是用来实现客户端存储数据,大家都知道之前的Cookie就是客户端存储的一种方式,今天看一看html5新增的本地存储方式:localStorage和sessionStorage. localStorage:存储的数据会一直存在本地客户端,即使浏览器关闭了也会存在: sessionStorage: 只是针对同一个 session 的数据存储,打开一个新来浏览器窗口或者窗口一旦关闭数据就没了.  既然知道了这两种新的本地存储方式,那怎么用那?

HTML5本地存储LocalStorage和sessionStorage

以前用wordpress做博客的时候,我做了个点赞的功能.设计这个点赞功能的时候,为防止访客不断刷赞,得做个时间间隔限制,首先我的设计方案是在数据库里记录ip和点赞的时间,后来一想那还得维护数据库(其实是觉得都没人点赞还弄得那么严格搞什么),果断改成把数据放到本地保存. 本地存储数据首先想到得是cookie和html5的 localStorage. cookie兼容性好,但是存储的数据量太少;localStorage存储量大,但是兼容性不是很好,毕竟ie6之流还是有不少份额的.最后考虑到 htm

HTML5本地存储localStorage与sessionStorage

在最近的项目中用到了html5的本地存储,下面总结一下. 1.html5几种存储形式 本地存储(localStorage && sessionStorage) 离线缓存(application cache) indexedDB 和 webSQL 2.localStorage && sessionStorage 过期时间:localStorage 永久存储,永不失效除非手动删除 sessionStorage 浏览器重新打开后就消失了 大小:每个域名是5M. 注:cookie一

html5客户端本地存储之sessionStorage及storage事件

首先您可以看一下<JavaScript本地存储实践(html5的localStorage和ie的userData)>sessionStorage和上文中提到的localStorage非常相识,方法也几乎一样: 非常通俗易懂的接口: sessionStorage.getItem(key):获取指定key本地存储的值sessionStorage.setItem(key,value):将value存储到key字段sessionStorage.removeItem(key):删除指定key本地存储的值

HTML5本地存储 localStorage

HTML5的本地存储是大势所趋,如果仅存储在内存中,则是sessionStorage,他们的语法都是一样,仅仅是一个存储在本地文件系统中,另一个存储在内存中(随着浏览器的关闭而消失),其语句如下: localStorage.setItem('a', 'xxxxxx'); // 设置 localStorage.getItem('a'); // 获取 localStorage.removeItem('a'); // 删除 下面说说有关localStorage和sessionStorage的特性. 1