html5 localstorage 生命周期,HTML5 LocalStorage 本地存储

localStorage和sessionStorage同样都是用来存储客户端临时信息的对象,他们均只能存储字符串类型的对象

localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,不然这些信息将永远存在

sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么全部经过sessionStorage存储的数据也就被清空了

ps:不一样浏览器没法共享localStorage或sessionStorage中的信息。相同浏览器的不一样页面间能够共享相同的localStorage(页面属于相同域名和端口),可是不一样页面或标签页间没法共享sessionStorage的信息。这里须要注意的是,页面及标签页仅指顶级窗口,若是一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是能够共享sessionStorage的

在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage

1. 首先天然是检测浏览器是否支持本地存储(如localStorage)

if(window.localStorage){

alert('This browser supports localStorage');

}else{

alert('This browser does NOT support localStorage');

}

2. 往 localStorage 里边设值

localStorage.name = 'zs';//设置name为"zs"

localStorage["name"] = "ls";//设置name为"ls"

localStorage.setItem("name","ww");//设置name为"ww"

3. 获取localStorage里边的值

localStorage.name

localStorage["name"]

localStorage.getItem("name")

另外,HTML5还提供了一个key()方法

var storage = window.localStorage;

function showStorage(){

for(var i=0;i

//key(i)得到相应的键,再用getItem()方法得到对应的值

document.write(storage.key(i)+ " : " + storage.getItem(storage.key(i)) + "
");

}

}

4. 清除localStorage里边的值

localStorage.removeItem("name")        // 删除name

localStorage.clear()    //清除全部

5. localStorage 事件

HTML5的本地存储,还提供了一个storage事件,能够对键值对的改变进行监听,使用方法以下

if(window.addEventListener){

window.addEventListener("storage",handleStorage,false);

}else if(window.attachEvent){

window.attachEvent("onstorage",handleStorage);

}

function handleStorage(e){

if(!e){e=window.event;}

//showStorage();

}

对于事件变量e,是一个StorageEvent对象,提供了一些实用的属性,能够很好的观察键值对的变化javascript

Propertyjava

Typejson

Description浏览器

keysession

Stringthis

The named key that was added, removed, or moddifiedurl

oldValuespa

Any对象

The previous value(now overwritten), or null if a new item was added索引

newValue

Any

The new value, or null if an item was added

url/uri

String

The page that called the method that triggered this change

另外,目前javascript使用很是多的json格式,若是但愿存储在本地,能够直接调用JSON.stringify()将其转为字符串。读取出来后调用JSON.parse()将字符串转为json格式

var details = {author:"xxx","description":"xxx"};

storage.setItem("details",JSON.stringify(details));

details = JSON.parse(storage.getItem("details"));

封装localStorage

var LS = {

set : function(key, value){

//在iPhone/iPad上有时设置setItem()时会出现诡异的QUOTA_EXCEEDED_ERR错误

//这时通常在setItem以前,先removeItem()就ok了

if( this.get(key) !== null )

this.remove(key);

localStorage.setItem(key, value);

},

//查询不存在的key时,有的浏览器返回undefined,这里统一返回null

get : function(key){

var v = localStorage.getItem(key);

return v === undefined ? null : v;

},

remove : function(key){ localStorage.removeItem(key); },

clear : function(){ localStorage.clear(); },

each : function(fn){

var n = localStorage.length, i = 0, fn = fn || function(){}, key;

for(; i

key = localStorage.key(i);

if( fn.call(this, key, this.get(key)) === false )

break;

//若是内容被删除,则总长度和索引都同步减小

if( localStorage.length < n ){

n --;

i --;

}

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值