使用HTML5 Web存储的localStorage和sessionStorage方式

简介: localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用。sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同意可以使用,关闭浏览器之后数据就会消失。

localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用。sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同意可以使用,关闭浏览器之后数据就会消失。

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


一、localStorage API 基本使用方法

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

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

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

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

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

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

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


2. 遍历 key 键值方法

?
1
2
3
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 的本地存储大小基本均有限制,一个测试的结果如下:

?
1
2
3
4
5
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 (超出则会弹出允许请求更多空间的对话框)

测试代码参考:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<! 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 数据存储异常处理

?
1
2
3
4
5
6
7
8
9
10
try {
  localStorage.setItem(key,value);
} catch (oException){
  if (oException.name ==  'QuotaExceededError' ){
   console.log( '超出本地存储限额!' );
   //如果历史信息不重要了,可清空后再设置
   localStorage.clear();
   localStorage.setItem(key,value);
  }
}



总结:

H5的两种存储技术的最大区别就是生命周期。localStorage是本地存储,存储期限不限;sessionStorage会话存储,页面关闭数据就会丢失。

使用方法:

localStorage.setItem(“key”,“value”)//存储

localStorage.getItem(key)//按key进行取值

localStorage.valueOf( )//获取全部值

localStorage.removeItem(key)//删除单个值

localStorage.clear()//删除全部数据

localStorage.length//获得数据的数量

localStorage.key(N)//获得第N个数据的key值

注:localStorage和sessionStorage用法相同

若转载请注明出处!若有疑问,请回复交流!
目录
相关文章
|
2天前
|
开发框架 .NET
ASP.NET Web Pages - HTML 表单
表单是 HTML 文档中放置输入控件(文本框、复选框、单选按钮、下拉列表)的部分。
18 2
|
9天前
|
移动开发 JavaScript 前端开发
揭秘!如何用Web2py+HTML5/CSS3/jQuery打造超炫响应式网站?你的设计梦想即将照进现实!
【8月更文挑战第31天】本文详细介绍如何利用Web2py框架及HTML5、CSS3与jQuery构建响应式网站。首先需安装Python和Web2py,并启动服务器。接着,在Web2py中创建新应用,例如命名为“ResponsiveSite”。随后,编写HTML5基本结构,包括头部、导航栏等元素。在`styles.css`文件中添加CSS3样式代码,实现响应式布局。最后,通过在`scripts.js`中加入jQuery脚本提升页面交互性,如点击导航项时平滑滚动至目标区域。此教程为你打下响应式网站设计的基础,便于进一步扩展和优化。
|
14天前
|
存储 移动开发 前端开发
HTML5时代来临,这些新特性你掌握了吗?一篇文章带你玩转Web前端技术潮流!
【8月更文挑战第26天】HTML5(简称H5)作为新一代Web标准,相比HTML4带来了诸多增强功能。
30 2
|
9天前
|
Java 数据安全/隐私保护 安全
掌握Struts 2动态方法调用,让你的Web开发如虎添翼,轻松应对复杂业务需求!
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活性而广受青睐。其动态方法调用(DMI)特性允许在不修改配置文件的情况下动态调用Action类中的方法,相比传统方法调用(需在`struts.xml`中为每个方法创建单独的`&lt;action&gt;`),DMI简化了配置并提升了灵活性、可维护性和扩展性。本文通过对比DMI与传统方法调用,展示如何利用DMI简化开发流程,并强调了在使用DMI时需注意的安全性和访问控制问题。
10 0
|
9天前
|
Java 开发者 关系型数据库
JSF与AWS的神秘之旅:如何在云端部署JSF应用,让你的Web应用如虎添翼?
【8月更文挑战第31天】在云计算蓬勃发展的今天,AWS已成为企业级应用的首选平台。本文探讨了在AWS上部署JSF(JavaServer Faces)应用的方法,这是一种广泛使用的Java Web框架。通过了解并利用AWS的基础设施与服务,如EC2、RDS 和 S3,开发者能够高效地部署和管理JSF应用。文章还提供了具体的部署步骤示例,并讨论了使用AWS可能遇到的挑战及应对策略,帮助开发者更好地利用AWS的强大功能,提升Web应用开发效率。
33 0
|
16天前
|
移动开发 数据挖掘 API
HTML5 中 Web Workers API 的用法
【8月更文挑战第24天】
32 0
|
XML 移动开发 数据格式
|
18天前
|
前端开发
HTML+CSS实现奇特的的企业官网效果
HTML+CSS实现奇特的的企业官网效果
HTML+CSS实现奇特的的企业官网效果
|
12天前
|
移动开发 前端开发 JavaScript
HTML与CSS二三事
HTML与CSS二三事
下一篇
DDNS