zoukankan      html  css  js  c++  java
  • Html5 本地存储

    首先自然是检测浏览器是否支持本地存储。在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage。

    if(window.localStorage){
         alert('This browser supports localStorage');
    }else{
         alert('This browser does NOT support localStorage');
    }

     sessionStorage与 localStorage 的异同

    sessionStorage 和 localStorage 就一个不同的地方, sessionStorage数据的存储仅特定于某个会话中,也就是说数据只保持到浏览器关闭,当浏览器关闭后重新打开这个页面时, 之前的存储已经被清除。而 localStorage 是一个持久化的存储,它并不局限于会话。

     sessionStorage临时保存即当浏览器关闭时,保存数据会销毁保存方法: 

    sessionStorage.setItem('key','value');// 或 sessionStorage.key = value;

     读取方法:

    变量 = sessionStorage.getItem('key') //或 变量 = sessionStorage.key;

    localStorage 永久保存 即将数据保存在客户端本地的硬件设备中,即使浏览器关闭,数据仍然存在。

    保存方法: 

    localStorage.setItem('key','value'); // 或localStorage.key = 'value' 

     读取方法:

    变量 = localStoragekey.getItem('key'); // 或localStorage.key 

    清除方法:

    localStorage.removeItem("key");

     ps: 如果希望一次性清除所有的键值对,可以使用clear()。

     例子: 

    localStorage.k = 1;//设置k为"1"
    localStorage["k"] = "sfsf";//设置k为"sfsf",覆盖上面的值
    localStorage.setItem("e","isaac");//设置e为"isaac"
    var a1 = localStorage["k"];//获取k的值
    var a2 = localStorage.k;//获取k的值
    var b = localStorage.getItem("e");//获取e的值
    localStorage.removeItem("c");//清除c的值

     sessionStorage和localStorage提供的key()和length可以方便的实现存储的数据遍历

    var storage = window.localStorage;
    function showStorage(){
     for(var i=0;i<storage.length;i++){
      //key(i)获得相应的键,再用getItem()方法获得对应的值
      document.write(storage.key(i)+ " : " + storage.getItem(storage.key(i)) + "<br>");
     }
    }

    需要注意的是,HTML5本地存储只能存字符串,任何格式存储的时候都会被自动转为字符串,所以读取的时候,需要自己进行类型的转换。

    另外,在iPhone/iPad上有时设置setItem()时会出现诡异的QUOTA_EXCEEDED_ERR错误,这时一般在setItem之前,先removeItem()清除一下就可以了。

     最后说一下

    storage 事件

    在存储事件的处理函数中是不能取消这个存储动作的。storage事件只是浏览器在数据变化发生之后给 你的一个通知。我们可以在这个事件中处理当修改存储后所要执行的处理; 

    window.addEventListener('storage',function(){
       // 当sessionStorage 或 localSetorage 的值发生变化时所要执行的处理。 
    },false)

     在事件处理函数中,触发事件的事件对像(event)具有如下属性

    • storageArea: 表示存储类型(Session或Local)
    • key:发生改变项的key
    • oldValue: key的原值
    • newValue: key的新值
    • url*: key改变发生的URL
  • 相关阅读:
    web前段学习2017.6.15
    web前段学习2017.6.13
    web前端2017.6.10
    web前段2017.6.8
    web前段学习2016.6.6
    宏任务与微任务
    浏览器兼容性问题
    TCP 和 UDP 的区别
    React如何渲染大数据量的列表?
    移动端兼容性问题
  • 原文地址:https://www.cnblogs.com/benbentu/p/4910551.html
Copyright © 2011-2022 走看看