博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js本地存储解决方案(localStorage与userData)
阅读量:4691 次
发布时间:2019-06-09

本文共 3396 字,大约阅读时间需要 11 分钟。

WEB应用的快速发展,是的本地存储一些数据也成为一种重要的需求,实现的方案也有很多,最普通的就是cookie了,大家也经常都用,但是cookie的缺点是显而易见的,其他的方案比如:IE6以上的userData,Firefox下面的globalStorage,以及Flash的本地存储,除了Flash之外,其他的几个都有一些兼容性的问题。

sessionStorage与localStorage

Web Storage实际上由两部分组成:sessionStorage与localStorage。

sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。

localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

userData

语法:

XML  <Prefix: CustomTag ID=sID STYLE="behavior:url('#default#userData')" />

HTML  <ELEMENT STYLE="behavior:url('#default#userData')" ID=sID>

Scripting  object .style.behavior = "url('#default#userData')"

object .addBehavior ("#default#userData")

属性:

expires 设置或者获取 userData behavior 保存数据的失效日期。

XMLDocument 获取 XML 的引用。

方法:

getAttribute() 获取指定的属性值。

load(object) 从 userData 存储区载入存储的对象数据。

removeAttribute() 移除对象的指定属性。

save(object) 将对象数据存储到一个 userData 存储区。

setAttribute() 设置指定的属性值。

localStorage

方法:

localStorage.getItem(key):获取指定key本地存储的值

localStorage.setItem(key,value):将value存储到key字段

localStorage.removeItem(key):删除指定key本地存储的值

封装

1 localData = {
2 hname:location.hostname?location.hostname:'localStatus', 3 isLocalStorage:window.localStorage?true:false, 4 dataDom:null, 5 6 initDom:function(){ //初始化userData 7 if(!this.dataDom){
8 try{
9 this.dataDom = document.createElement('input');//这里使用hidden的input元素 10 this.dataDom.type = 'hidden'; 11 this.dataDom.style.display = "none"; 12 this.dataDom.addBehavior('#default#userData');//这是userData的语法 13 document.body.appendChild(this.dataDom); 14 var exDate = new Date(); 15 exDate = exDate.getDate()+30; 16 this.dataDom.expires = exDate.toUTCString();//设定过期时间 17 }catch(ex){
18 return false; 19 } 20 } 21 return true; 22 }, 23 set:function(key,value){
24 if(this.isLocalStorage){
25 window.localStorage.setItem(key,value); 26 }else{
27 if(this.initDom()){
28 this.dataDom.load(this.hname); 29 this.dataDom.setAttribute(key,value); 30 this.dataDom.save(this.hname) 31 } 32 } 33 }, 34 get:function(key){
35 if(this.isLocalStorage){
36 return window.localStorage.getItem(key); 37 }else{
38 if(this.initDom()){
39 this.dataDom.load(this.hname); 40 return this.dataDom.getAttribute(key); 41 } 42 } 43 }, 44 remove:function(key){
45 if(this.isLocalStorage){
46 localStorage.removeItem(key); 47 }else{
48 if(this.initDom()){
49 this.dataDom.load(this.hname); 50 this.dataDom.removeAttribute(key); 51 this.dataDom.save(this.hname) 52 } 53 } 54 } 55 }

使用方法就很简单了,这节set,get,remove就好了。

下面这个例子,在你输入之后,然后刷新页面,也会保留相应的值。

转载于:https://www.cnblogs.com/Code-Engineering/p/5745438.html

你可能感兴趣的文章
杭电3466————DP之01背包(对状态转移方程的更新理解)
查看>>
kafka中的消费组
查看>>
python--注释
查看>>
SQL case when else
查看>>
Oracle EBS 初始化用户密码
查看>>
SYS_CONTEXT 详细用法
查看>>
Pycharm配置autopep8让Python代码更符合pep8规范
查看>>
我的第一篇博客
查看>>
大数据学习线路整理
查看>>
【C++算法与数据结构学习笔记------单链表实现多项式】
查看>>
C#垃圾回收机制
查看>>
31、任务三十一——表单联动
查看>>
python之hasattr、getattr和setattr函数
查看>>
maven使用阿里镜像配置文件
查看>>
Copy code from eclipse to word, save syntax.
查看>>
arguments.callee的作用及替换方案
查看>>
23 Java学习之RandomAccessFile
查看>>
P2709 小B的询问
查看>>
PHP echo 和 print 语句
查看>>
第一讲 一个简单的Qt程序分析
查看>>