`

js本地存储解决方案(localStorage与userData)

阅读更多

 

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本地存储的值

封装

localData = {
         hname:location.hostname?location.hostname:'localStatus',
         isLocalStorage:window.localStorage?true:false,
         dataDom:null,
 
         initDom:function(){ //初始化userData
             if(!this.dataDom){
                 try{
                     this.dataDom = document.createElement('input');//这里使用hidden的input元素
                     this.dataDom.type = 'hidden';
                     this.dataDom.style.display = "none";
                     this.dataDom.addBehavior('#default#userData');//这是userData的语法
                     document.body.appendChild(this.dataDom);
                     var exDate = new Date();
                     exDate = exDate.getDate()+30;
                     this.dataDom.expires = exDate.toUTCString();//设定过期时间
                 }catch(ex){
                     return false;
                 }
             }
             return true;
         },
         set:function(key,value){
             if(this.isLocalStorage){
                 window.localStorage.setItem(key,value);
             }else{
                 if(this.initDom()){
                     this.dataDom.load(this.hname);
                     this.dataDom.setAttribute(key,value);
                     this.dataDom.save(this.hname)
                 }
             }
         },
         get:function(key){
             if(this.isLocalStorage){
                 return window.localStorage.getItem(key);
             }else{
                 if(this.initDom()){
                     this.dataDom.load(this.hname);
                     return this.dataDom.getAttribute(key);
                 }
             }
         },
         remove:function(key){
             if(this.isLocalStorage){
                 localStorage.removeItem(key);
             }else{
                 if(this.initDom()){
                     this.dataDom.load(this.hname);
                     this.dataDom.removeAttribute(key);
                     this.dataDom.save(this.hname)
                 }
             }
         }
     }
 

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

 

分享到:
评论

相关推荐

    HTML5 LocalStorage和UserData实现兼容多浏览器的本地存储

    与LocalStorage类似,UserData也采用键值对存储,但它没有跨域限制,且存储容量相对较小(约64KB)。 使用UserData的基本步骤包括: 1. 创建一个DOM元素,如`&lt;div&gt;`,并为其设置`userData`属性。 2. 使用`...

    JS实现本地存储信息的方法(基于localStorage与userData)

    现代浏览器提供了两种主要的本地存储解决方案:`localStorage` 和 `sessionStorage`。`localStorage` 是持久化的,数据在浏览器关闭后仍然存在,直到被手动清除或超过存储限制;`sessionStorage` 则只在当前会话内...

    storage:一个基于HTML5 Web本地存储的扩展解决方案,虽然IE早期不支持本地存储(localStorage),但是可以通过userData来实现更多的本地数据存储

    Storage.js是一个基于HTML5 Web本地存储的扩展解决方案,虽然IE早期不支持本地存储(localStorage),但是可以通过userData来实现更多的本地数据存储。由于cookie本身的不可替代性,Storage.js也添加了对cookie的封装...

    Storage:具有到期日期的 Web 数据存储(localStorage、userData、cookie)

    #Storage.jsStorage.js是一个基于HTML5 Web本地存储的扩展解决方案,虽然IE早期不支持本地存储(localStorage),但是可以通过userData来实现更多的本地数据存储。由于cookie本身的不可替代性,Storage.js也添加了对...

    全浏览器兼容localStorage组件

    针对这个问题,"全浏览器兼容localStorage组件" 提供了一个解决方案,旨在确保在各种浏览器环境中都能稳定且有效地使用`localStorage`。 这个组件的核心目标是提供一个高度兼容的`localStorage`实现,特别强调对IE...

    突袭HTML5之Javascript API扩展3—本地存储全新体验

    HTML5的Javascript API扩展在本地存储方面带来了全新的体验,解决了传统方法中存在的一系列问题。在HTML5之前,开发者在客户端存储数据时面临多种选择,如HTTP Cookie、IE的userData、Flash Cookie以及Google Gears...

    杂学之(前端localStorage).docx

    在HTML5中,`localStorage`是一项重要的前端存储技术,它为开发者提供了更高效的数据存储解决方案,弥补了传统Cookie存储容量的不足。Cookie每个条目的存储限制为4KB,而`localStorage`通常支持5MB的数据存储,尽管...

    LocalStorage

    4. **兼容性**:LocalStorage是HTML5标准的一部分,因此在现代浏览器中支持良好,但老版本的IE浏览器(IE8以下)需要考虑其他解决方案,如使用`userData`行为。 总结来说,LocalStorage是Web开发中一个重要的本地...

    IE本地存储userdata的一个bug说明

    然而,UserData并非一个完美的解决方案,它存在一些未被广泛认知的bug,其中一个就是我们今天要讨论的问题。 UserData的基本用法是创建一个DOM对象,然后通过这个对象的setAttribute方法来设置属性,并通过save方法...

    web基于浏览器的本地存储方法应用

    尽管有了这种兼容性解决方案,但仍需要注意一些问题。例如,当在IE中存储的数据在其他浏览器(如Chrome)中打开时可能无法获取,因为每种浏览器的本地存储机制是独立的,不具有跨浏览器共享数据的能力。为了解决这个...

    js浏览器本地存储store.js介绍及应用

    store.js 作为一个兼容性包装器,能够自动检测浏览器对 LocalStorage 的支持情况,以及回退到其他存储方案(如 globalStorage 或 userData),从而无需开发者手动处理兼容性问题,极大地简化了跨浏览器的本地存储...

    改版了网上的一个js操作userdata

    这个改版的 JS 脚本为开发者提供了一种跨浏览器的解决方案,可以在不同浏览器环境下实现类似的功能,即在用户本地存储数据。对于需要在用户多次访问之间保持状态的应用场景,如购物车、用户设置等,这种机制非常有用...

    redux-persist-electron-storage-源码.rar

    总的来说,通过深入研究 `redux-persist-electron-storage` 的源码,我们可以了解到如何利用 Electron 的本地存储能力与 Redux 的状态管理相结合,为桌面应用提供状态持久化解决方案。这有助于我们理解和定制自己的...

    browser-storage:基于浏览器的缓存策略

    浏览器本地存储的一个解决方案,存储优先级依次为:HTML5-localStorage &gt; IE-UserData &gt; Cookie;并提供一套友好的API,对本地存储数据进行批量存储、读取、移除、清空等操作 简介 /** * 全浏览器支持的本地存储...

    UserData用法总结 lanyu出品

    需要注意的是,随着技术的发展和浏览器生态的变化,UserData的使用可能会受到限制,尤其是在现代的Web开发环境中,更推荐使用Web存储API,如localStorage和sessionStorage等,它们是现代Web标准中的存储解决方案,...

    短小精悍的前端缓存插件解决前端缓存问题

    npm-storage 是一个轻量级的前端存储解决方案,它基于浏览器的本地存储机制(如localStorage或sessionStorage),并提供了一种方便的方式来管理和更新缓存数据。这个插件尤其适合那些需要处理大量静态资源或动态数据...

Global site tag (gtag.js) - Google Analytics