首页 > web前端 > js教程 > 正文

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

高洛峰
发布: 2017-02-20 16:34:05
原创
1412 人浏览过

这篇文章主要介绍了JS实现本地存储信息的方法,基于localStorage与userData实现本地存储的功能,需要的朋友可以参考下

本文实例讲述了JS实现本地存储信息的方法。分享给大家供大家参考,具体如下:

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

sessionStorage与localStorage

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

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

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

userData

语法:

XML  <br>HTML  <ELEMENT STYLE="behavior:url(&#39;#default#userData&#39;)" ID=sID><br>Scripting  object .style.behavior = "url('#default#userData')"<br>object .addBehavior ("#default#userData")</p> <p><span style="color: #0000ff"><strong>属性:</strong></span></p> <p>expires 设置或者获取 userData behavior 保存数据的失效日期。<br>XMLDocument 获取 XML 的引用。</p> <p><span style="color: #0000ff"><strong>方法:</strong></span></p> <p><code>getAttribute()</code> 获取指定的属性值。<br><code>load(object) </code>从 userData 存储区载入存储的对象数据。<br><code>removeAttribute() </code>移除对象的指定属性。<br><code>save(object) </code>将对象数据存储到一个 userData 存储区。<br><code>setAttribute() </code>设置指定的属性值。<br></p> <p><strong>localStorage</strong></p> <p><span style="color: #0000ff"><strong>方法:</strong></span></p> <p><code>localStorage.getItem(key):</code>获取指定key本地存储的值<br><code>localStorage.setItem(key,value):</code>将value存储到key字段<br><code>localStorage.removeItem(key):</code>删除指定key本地存储的值</p> <p>封装</p> <p class="jb51code"><br></p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;">localData = { hname:location.hostname?location.hostname:&#39;localStatus&#39;, isLocalStorage:window.localStorage?true:false, dataDom:null, initDom:function(){ //初始化userData if(!this.dataDom){ try{ this.dataDom = document.createElement(&#39;input&#39;);//这里使用hidden的input元素 this.dataDom.type = &#39;hidden&#39;; this.dataDom.style.display = "none"; this.dataDom.addBehavior(&#39;#default#userData&#39;);//这是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就好了。

里面涉及到的 demo 代码如下:


<script type="text/javascript">
(function() {
  window.localData = {
    hname : location.hostname ? location.hostname : &#39;localStatus&#39;,
    isLocalStorage : window.localStorage ? true : false,
    dataDom : null,
    initDom : function() {
      if (!this.dataDom) {
        try {
          this.dataDom = document.createElement(&#39;input&#39;);
          this.dataDom.type = &#39;hidden&#39;;
          this.dataDom.style.display = "none";
          this.dataDom.addBehavior(&#39;#default#userData&#39;);
          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)
        }
      }
    }
  };
  var text = document.getElementById(&#39;localDataHook&#39;);
  var btn = document.getElementById(&#39;clearBtnHook&#39;);
  window.onbeforeunload = function() {
    localData.set(&#39;beiyuuData&#39;, text.value);
  };
  btn.onclick = function() {
    localData.remove(&#39;beiyuuData&#39;);
    text.value = &#39;&#39;
  };
  if (localData.get(&#39;beiyuuData&#39;)) {
    text.value = localData.get(&#39;beiyuuData&#39;);
  }
})();
</script>
登录后复制


还有一个比较实用的技术,阻止页面关闭,显示 关闭页面确认弹出框,参考代码如下:


window.onbeforeunload = function() {
  if (!canLeavePage()) {
    return (&#39;确认离开当前页面吗?未保存的数据将会丢失!&#39;);
  }
登录后复制

希望本文所述对大家JavaScript程序设计有所帮助。

更多JS实现本地存储信息的方法(基于localStorage与userData)相关文章请关注PHP中文网!


来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板