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就好了。

转自:http://www.cnblogs.com/beiyuu/archive/2011/07/20/js-localstorage-userdata.html

js实现兼容的本地化存储方案相关推荐

  1. 日均数据量千万级,MySQL、TiDB 两种存储方案的落地对比

    盖娅广告匹配系统(GaeaAD)用于支撑盖娅互娱全平台实时广告投放系统,需要将广告数据和游戏 SDK 上报的信息进行近实时匹配,本质上来说需要实时的根据各个渠道的广告投放与相应渠道带来的游戏玩家数据进 ...

  2. 解决IE6、IE7、IE8、Firefox兼容的两种方案

    转自:http://dyclh.iteye.com/blog/845349 浏览器不兼容,你知道源头吗? 凡事都要知其然,才能知其所以然,前端开发的朋友想毕都会碰到浏览器兼容的问题,今天在网上觅到此文 ...

  3. php sqlite存入文件夹,PHP_小文件php+SQLite存储方案,我们草根站长购买的虚拟主机 - phpStudy...

    小文件php+SQLite存储方案 我们草根站长购买的虚拟主机往往都有文件数量限制,大量小文件占用大量资源,落伍精华区也有兄弟推荐豆瓣的解决方法,但是要有主机权限.只能另装思路,采用php+SQLit ...

  4. HBase实战 | 从MySQL到HBase:数据存储方案转型的演进

    作者介绍 杨宏志,知乎首页架构负责人,主要负责首页工程化建设.工程架构优化.性能提升等工作.知乎专栏:https://zhuanlan.zhihu.com/c_195355141 本文转载自dbapl ...

  5. PC端本地存储方案,Windows和Mac双端通用方案

    功能要求:缓存数据 没有频繁的读写,存储服务端下发的数据,当数据有更新的时候,本地存储会进行更新,同时刷新内存. 本地存储作为持久化储存方案,程序每次启动时会读取数据加载到内存,当数据有更新的时候,也 ...

  6. uniapp本地数据库_Uniapp教程|App/uni-app离线本地存储方案

    5+App的离线存储 HTML5+的离线本地存储有如下多种方案: HTML5标准方案:cookie.localstorage.sessionstorage.websql.indexedDB HTML5 ...

  7. 矩阵存储 oracle表,矩阵存储方案 - Oracle® Developer Studio 12.5:性能库用户指南

    矩阵存储方案 对已存储的数组进行处理的某些 Oracle Developer Studio 性能库例程通常具有可利用这些特殊存储形式的相应例程.例如,DGBMV 将构成带状存储中的一般矩阵和向量的积, ...

  8. 架构设计:系统存储(1)——块存储方案(1)

    1.概述 在"系统存储"专题中,我们将按照"从上至下"的顺序向读者介绍整个"系统存储"体系.在这个专题中我们将至少介绍机械硬盘的主要结构.磁 ...

  9. 高性能、免运维,博云开源云原生本地存储方案:Carina

    2021 年 10 月 11 日,博云正式开源 Carina 本地存储方案,Carina 基于 Kubernetes 及 LVM 实现,提供了数据库与中间件等有状态应用在 Kubernetes 中运行 ...

  10. 基于fuse文件系统的android sdcard存储方案:之二

    续<基于fuse文件系统的android sdcard存储方案:之一>,再聊聊基于fuse文件系统的android sdcard存储方案:之二, 以后有空再谈谈该方案的缺点,及优化方案. ...

最新文章

  1. cactiez----监控windows主机 server 2008 r2
  2. ELK6.0已取消filebeat配置document_type
  3. 400全集python全套视频教程-千锋出品全套python视频教程,400大全集,你了解吗?...
  4. 璧山哪里可以学基础计算机,璧山学电脑在哪里
  5. 【转】判断五张牌是不是一个顺子
  6. 城管威逼交警“让老百姓笑话”
  7. 7-35 城市间紧急救援 (25 分)(思路加详解)
  8. java爬虫获取div内容_Java爬虫-简单解析网页内容
  9. 三十二楼层选几层最好_买房子选几层最好?网友:我是按这个公式来计算黄金楼层,你咋看?...
  10. java soap api操作和发送soap消息
  11. 机器视觉烟包行业质量检测解决方案
  12. 大数据分析具备哪些特点
  13. dotnet core 文档链接
  14. Go黑魔法之cgo reflect访问list存储C指针
  15. 随机信号分析基础——例题篇(例题3.4)
  16. LeetCode-外观数列【小名带你解读LeetCode第38题-外观数列 的题目!最清晰的题解】
  17. 在线代理(Web ProxyServer)完全详解
  18. 智联招聘 'python数据分析'职位分析第一篇
  19. RTC领域首个AI算法大赛 AI in RTC 2019 创新挑战圆满落幕
  20. 华为笔试c语言,华为笔试算法题汇总

热门文章

  1. axios设置headers
  2. html/css插入base64背景图片
  3. 炼丹笔记一——基于TensorFlow的vgg16的cifar10和100简单探究超参数对训练集收敛情况的影响
  4. Android hook微信 apk 实时获取微信聊天消息记录
  5. 大学生涯(大四篇)毕业事件指南
  6. Go语法·类型选择(type switch)
  7. 使用python调用百度翻译api进行翻译
  8. QCC3040---芯片数据手册 ADK release data sheet
  9. 物理防火墙是什么?有什么作用?
  10. MTK 11A MAINMENU