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


Posted in HTML / CSS onMay 08, 2014

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

一、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 (超出则会弹出允许请求更多空间的对话框)

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

测试代码参考:

复制代码
代码如下:

<!DOCTYPE html>
<html>
<head>
<script>
function log( msg ) {
console.log(msg);
alert(msg);
}</p> <p> 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);
}</p> <p> sstr = str.slice( 0, end );
localStorage.clear();
try {
localStorage.setItem( 'cache', sstr );
limit = sstr.length;
isLeft = 0;
} catch ( e ) {
isLeft = 1;
}</p> <p> base = end;
off = Math.floor( off / 2 );
}</p> <p> 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);
}
}
HTML / CSS 相关文章推荐
CSS3媒体查询(Media Queries)介绍
Sep 12 HTML / CSS
多重CSS背景动画实现方法示例
Apr 04 HTML / CSS
利用纯css3实现的文字亮光特效的代码演示
Nov 27 HTML / CSS
CSS3实现复选框动画特效示例代码
Sep 27 HTML / CSS
用CSS3实现无限循环的无缝滚动的实例代码
Jul 04 HTML / CSS
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
Sep 15 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
Aug 06 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
Jan 27 HTML / CSS
html5超简单的localStorage实现记住密码的功能实现
Sep 07 HTML / CSS
HTML5页面中尝试调起APP功能
Sep 12 HTML / CSS
关于canvas绘制模糊问题的解决方法
Sep 24 HTML / CSS
使用HTML+Css+transform实现3D导航栏的示例代码
Mar 31 HTML / CSS
html5实现canvas阴影效果示例
May 07 #HTML / CSS
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
May 07 #HTML / CSS
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
May 07 #HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
May 07 #HTML / CSS
html5 datalist标签使用示例(自动完成组件)
May 04 #HTML / CSS
HTML5 visibilityState属性详细介绍和使用实例
May 03 #HTML / CSS
HTML5中判断用户是否正在浏览页面的方法
May 03 #HTML / CSS
You might like
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
yii使用activeFileField控件实现上传文件与图片的方法
2015/12/28 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
Mootools 1.2教程 类(一)
2009/09/15 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
Python操作json数据的一个简单例子
2014/04/17 Python
Python 给某个文件名添加时间戳的方法
2018/10/16 Python
对Python生成器、装饰器、递归的使用详解
2019/07/19 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
python 5个实用的技巧
2020/09/27 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
美国时尚在线:Showpo
2017/09/08 全球购物
信息技术毕业生自荐信范文
2014/03/13 职场文书
2015年外联部工作总结
2015/04/03 职场文书
企业员工辞职信范文
2015/05/12 职场文书
运动会运动员赞词
2015/07/22 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
2021/10/16 HTML / CSS
python对文档中元素删除,替换操作
2022/04/02 Python