localStorage是本地存储的,除非清空本地数据
localStorage不会自动把数据发给服务器,仅在本地保存。html
localStorage只能存字符串,任何类型存储的时候都会被自动转换成字符串web
使用方式(localStorage是window的属性)sql
设置localStorage键值对数据库
localStorage.name = 'zhangsan';//存储一个键值对跨域
localStorage.name = 'lisi';//name新值会覆盖旧值浏览器
localStorage['年龄'] = 23;//key是中文就使用这种方式服务器
localStorage['404'] = '你迷路了';//key是数字就用这种方式cookie
localStorage.setItem('email','chentging@aliyun.com');//使用setItem函数建立一个键值对session
根据localStorge键取用值异步
console.log(localStorage.name);
console.log(localStorage['年龄']);
console.log(localStorage['404']);
console.log(localStorage.getItem('name'));
//经过key()函数获取键值对中的key
console.log(localStorage.key(index));
清除localStorage
//清除特定的键值对
console.log(localStorage.removeItem('name'));//清除name的值
//清除全部键值对
localStorage.clear();
sessionStorage只伴随着session,窗口一旦关闭就没了
sessionStorage不会自动把数据发给服务器,仅在本地保存。
sessionStorage不在不一样的浏览器窗口中共享,即便是同一个页面
localStorage只能存字符串,任何类型存储的时候都会被自动转换成字符串
使用方式(localStorage是window的属性)
设置,取值,清除都和localStorage彻底同样
简介
Web SQL DatabaseAPI实际上未包含在HTML 5规范之中,它是一个独立的规范,它引入了一套使用SQL操做客户端数据库的API,这些API有同步的,也有异步的,同步版本的API只在工做线程(Worker Threads)上有用,因为并非全部的浏览器都支持工做线程,通常状况下,都会使用异步API。它的核心方法有三个:openDatabase,transaction和executeSql。这些API已经被普遍的实如今了不一样的浏览器里,尤为是手机端浏览器。虽然W3C官方在2011年11月声明已经再也不维护Web SQL Database规范,但因为其普遍的实现程度,了解这些API对 Web开发仍是很是有必要的
openDatabase()方法打开一个已经存在的数据库链接,若是数据库不存在,则建立一个新的数数据库
var db = openDatabase('mydb','1.0','my database',1024*1024);
4个参数的意义(数据库名、版本号、数据库说明、数据库大小单位byte(数据库大小可变)、建立回滚)
注意:若是数据库已经建立,第五个参数将会进行回滚操做。若是省略此参数,仍能建立执行错误的函数也有两个:tt,事务性参数,error,错误的对象
实例: var db = openDatabase('mydb','1.0','my database',1024*1024); if (db) {} //能够判断是否成功链接上数据库 db.transaction(function(tx) { //建立一个表 tx.executeSql('create table if not exists accountTab(name TEXT,age INTEGER,email TEXT)',[], function() {}, function(tx,error) { console.log(error.source + ':' +error.message);//遇到错误打印出错误信息 }); //插入数据 tx.executeSql('insert into accountTab values(?,?,?)',['zhangsan',23,'chentging@aliyun.com']); //查询数据 tx.executeSql('select * from accountTab',[],function(tt,rs) { //循环结果集 for(var i = 0; i < rs.rows.length;i++) { console.log(rs.rows);//输出结果集 } }); });
cookie只在设置的cookie过时时间以前一直有效,即便窗口或浏览器关闭
cookie数据始终在同源的http请求中携带(即便不须要),即cookie在浏览器和服务器间来回传递
cookie数据还有路径(path)的概念,能够限制cookie只属于某个路径下
存储大小限制也不一样,cookie数据不能超过4k,同时由于每次http请求都会携带cookie,因此cookie只适合保存很小的数据
localStorage:始终有效,窗口或标签页关闭也一直保存(除非主动删除数据),所以用做持久数据
sessionStorage每一个窗口的值都是独立的(每一个窗口都有本身的数据),它的数据会随着窗口的关闭而消失,窗口间的sessionStorage也是不能够共享的(就是,你再打开一个标签页,一样的地址,也不会共享)
localStorage 在全部同源页面中都是共享的(前提是相同浏览器,别一个是谷歌浏览器,一个火狐浏览器,而后打开同一个页面说不是共享的哈哈)也就是能跨页不能跨域
cookie的封装,我推荐你们使用cookie相关的插件(固然有时间也能够本身封装,网上也不少)
http://www.cnblogs.com/jicheng/p/5946460.html
http://www.cnblogs.com/kissdodog/archive/2012/12/14/2818827.html
当程序修改localStorage与sessionStorage时将触发全局事件。
当setItem(),removeItem()或者clear() 方法被调用,而且数据真的发生了改变时,就会触发storage事件,若是须要进行监听数据处理,经过如下方法:
window.addEventListener(event,handleEvent, capture)
event:设置成storage
handleEvent:事件处理函数
capture:事件处理顺序,通常设置成false,表示采用冒泡方式处理
handleEvent处理事件的函数会接收到一个StorageEvent对象,该对象有如下属性:
key:被修改的键。
oldValue:修改前的值(若是是增长新的键值,则该属性为null)
newValue:修改后的值(若是是删除键值,则该属性为null)
url/uri:触发当前存储事件的页面的url
注意:storage改变的时候,触发这个事件会调用全部同域下其余窗口的storage事件,不过它自己触发storage即当前窗口是不会触发这个事件的(固然ie这个特例除外,它包含本身本事也会触发storage事件)