用来保存键值对数据,数据以属性的方式保存在storage实例对象上

 
可以用storage1.length来决定键值对的数量,但是无法决定数据的大小,storage1.remainingSpace可以获得剩余空间大小
 
只能以string的形式保存数据,非string数据会被转化为string再存储
 
1、sessionStorage
存储一次服务会话中的数据,浏览器关闭后清除数据,即使浏览器奔溃也可以恢复(Firefox和webview可以,ie不行)
sessionStorage.setItem(“name”, “Nicholas”);                         //推荐使用这种方式
sessionStorage.book = “Professional JavaScript”;
写入数据的时候ie是异步的,因此数据量大的时候会觉得比较快,因为它没有同步把数据写到硬盘里
 
for (var i=0, len = sessionStorage.length; i < len; i++){      //遍历内容
var key = sessionStorage.key(i);                                        //可以获得指定位置的key名称
var value = sessionStorage.getItem(key);
alert(key + “=” + value);
}
 
2、globalStorage  object   (Firefox2实现了)
目的是在不同会话之间保存数据以及一些接入限制,需要添加域名:
//save value
globalStorage[“wrox.com”].name = “Nicholas”;          //这样写域名即使子域名也是可以使用的,如果是www.wrox.com就限制子域名不可用
//get value
var name = globalStorage[“wrox.com”].name;
接入数据是会受协议,端口,域名等限制,例如一个数据是在https情况下保存的,那么在http情况下是无法获取该数据的
 
如果怕出错就使用:
globalStorage[location.host].name = “Nicholas”;                    //这样可以保持协议,端口,域名一致
var book = globalStorage[location.host].getItem(“book”);
 
globalStorage的数据会一直保存,除非被删除,或者用户清掉浏览器缓存
 
3、localStorage Object   (就是这个后来取代globalStorage  object,在修订后的HTML5文档)
这个不用去设置域名那些,因为已经封装好了,只有域名,协议,端口一致才能获取数据,子域名是不可以的。
对于只支持 globalStorage  的浏览器:
function getLocalStorage(){
if (typeof localStorage == “object”){
     return localStorage;
} else if (typeof globalStorage == “object”){
     return globalStorage[location.host];
} else {
     throw new Error(“Local storage not available.”);
}
}
var storage = getLocalStorage();
 
当storage被操作的时候会在document触发storage事件:
document.addEventListener("storage", function(){
    alert(“Storage changed for “ + event.domain);
}, false)
 
使用:
localStorage.setItem("username", "John");
alert( "username = " + localStorage.getItem("username"));
 
不同浏览器桌面或者手机对storage大小限制不同:超出可能导致数据覆盖或者闪退

web storage 离线存储的更多相关文章

  1. H5中使用Web Storage来存储结构化数据

    在上一篇对Web Storage的介绍中,可以看到,使用Storage保存key—value对时,key.value只能是字符串,这对于简单的数据来说已经够了,但是如果需要保存更复杂的数据,比如保存类 ...

  2. H5新增的Web Storage本地存储

    html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage. sessionStorage用于本地存储一个会话(session)中的数据,这些数据只 ...

  3. HTML5 WEB Storage - localStorage存储位置在哪

    localStorage作为客户端浏览器持久化存储方案 这个是浏览器隔离的,每个浏览器都会把localStorage存储在自己的UserData中,如chrome一般就是 C:\Users\你的计算机 ...

  4. Atitit.h5 web webview性能提升解决方案-----fileStrore缓存离线存储+http方案

    Atitit.h5 web webview性能提升解决方案-----fileStrore缓存离线存储+http方案 1. 业务场景 android+webview h5 css背景图性能提升1 2. ...

  5. HTML5本地存储 Web Storage

    Web Storage基本介绍 HTML5 定义了本地存储规范 Web Storage , 提供了两种存储类型 API  sessionStorage 和 localStorage,二者的差异主要是数 ...

  6. 数据存储的两种方式:Cookie 和Web Storage(转)

    数据存储的两种方式:Cookie 和Web Storage   数据存储的两种方式:Cookie 和Web Storage 1.Cookie Cookie的作用就像你去超市购物时,第一次给你办张购物卡 ...

  7. H5本地储存Web Storage

    一.本地存储由来的背景 由于HTML4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是Cookie的这些限制,也就导致了C ...

  8. 解析H5本地储存Web Storage

    一.本地存储由来的背景 由于HTML4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是Cookie的这些限制,也就导致了C ...

  9. HTML5 Web 客户端五种离线存储方式汇总

    最近折腾HTML5游戏需要离线存储功能,便把目前可用的几种HTML5存储方式研究了下,基于HT for Web写了个综合的实例,分别利用了Cookie.WebStorage.IndexedDB以及Fi ...

随机推荐

  1. asp.net mvc项目实记-开启伪静态-Bundle压缩css,js

    百度这些东西,还是会浪费了一些不必要的时间,记录记录以备后续 一.开启伪静态 如果不在web.config中配置管道开关则伪静态无效 首先在RouteConfig.cs中中注册路由 routes.Ma ...

  2. 程序员的自我修养九Windows下的动态链接

    9.1 DLL简介 DLL即动态链接库的缩写,它相对于Linux下的共享对象. Windows下的DLL文件和EXE文件实际上是一个概念,它们都是有PE格式的二进制文件. 微软希望通过DLL机制加强软 ...

  3. 调试 ASP.NET Core 2.0 源代码

    在Visual Studio 2017中可以通过符号以及源链接,非常方便对 ASP.NET Core 2.0中源代码进行调试.在这篇文章中,我们将重点介绍如何使用源链接对ASP.NET Core源进行 ...

  4. django获取ajax的post复杂对象

    一.django的request中post对象为空(即获取不到前台ajax传送的post对象) 1.将django的setting中的django.middleware.csrf.CsrfViewMi ...

  5. webpack2使用ch10-处理图片(png jpg svg 等) 限制图片 压缩图片

    1 目录展示 安装依赖 "file-loader": "^0.11.1", "image-webpack-loader": "^3 ...

  6. Java面向对象 线程技术 -- 下篇

     Java面向对象 线程技术 -- 下篇 知识概要:              (1)线程间的通信           生产者 - 消费者 (2)生产者消费者案例优化 (3)守护线程 (4)停止线 ...

  7. 从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置

    第1部分:http://www.cnblogs.com/cgzl/p/7637250.html 第2部分:http://www.cnblogs.com/cgzl/p/7640077.html 第3部分 ...

  8. [C#]Winform后台提交数据且获取远程接口返回的XML数据,转换成DataSet

    #region 接口返回的Xml转换成DataSet /// <summary> /// 返回的Xml转换成DataSet /// </summary> /// <par ...

  9. 数据库表反向生成(二) Django ORM inspectdb

    在前一篇我们说了,mybatis-generator反向生成代码. 这里我们开始说如何在django中反向生成mysql model代码. 我们在展示django ORM反向生成之前,我们先说一下怎么 ...

  10. 浅谈oracle树状结构层级查询之start with ....connect by prior、level及order by

    浅谈oracle树状结构层级查询 oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只 ...