热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

html5localstorage生命周期,HTML5LocalStorage本地存储

localStorage和sessionStorage同样都是用来存储客户端临时信息的对象,他们均只能存储字符串类型的对象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 --;

i --;

}

}

}

}



推荐阅读
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
author-avatar
don't
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有