zoukankan      html  css  js  c++  java
  • web storage 离线存储

    用来保存键值对数据,数据以属性的方式保存在storage实例对象上

     
    可以用storage1.length来决定键值对的数量,但是无法决定数据的大小,storage1.remainingSpace可以获得剩余空间大小
     
    只能以string的形式保存数据,非string数据会被转化为string再存储
     
    1、sessionStorage
    存储一次服务会话中的数据,浏览器关闭后清除数据,即使浏览器奔溃也可以恢复(Firefox和webview可以,ie不行)
    sessionStorage.setItem(“name”, “Nicholas”);                         //推荐使用这种方式
    sessionStorage.book = “Professional JavaScript”;
    写入数据的时候ie是异步的,因此数据量大的时候会觉得比较快,因为它没有同步把数据写到硬盘里
     
    for (var i=0, len = sessionStorage.length; i < len; i++){      //遍历内容
    var key = sessionStorage.key(i);                                        //可以获得指定位置的key名称
    var value = sessionStorage.getItem(key);
    alert(key + “=” + value);
    }
     
    2、globalStorage  object   (Firefox2实现了)
    目的是在不同会话之间保存数据以及一些接入限制,需要添加域名:
    //save value
    globalStorage[“wrox.com”].name = “Nicholas”;          //这样写域名即使子域名也是可以使用的,如果是www.wrox.com就限制子域名不可用
    //get value
    var name = globalStorage[“wrox.com”].name;
    接入数据是会受协议,端口,域名等限制,例如一个数据是在https情况下保存的,那么在http情况下是无法获取该数据的
     
    如果怕出错就使用:
    globalStorage[location.host].name = “Nicholas”;                    //这样可以保持协议,端口,域名一致
    var book = globalStorage[location.host].getItem(“book”);
     
    globalStorage的数据会一直保存,除非被删除,或者用户清掉浏览器缓存
     
    3、localStorage Object   (就是这个后来取代globalStorage  object,在修订后的HTML5文档)
    这个不用去设置域名那些,因为已经封装好了,只有域名,协议,端口一致才能获取数据,子域名是不可以的。
    对于只支持 globalStorage  的浏览器:
    function getLocalStorage(){
    if (typeof localStorage == “object”){
         return localStorage;
    } else if (typeof globalStorage == “object”){
         return globalStorage[location.host];
    } else {
         throw new Error(“Local storage not available.”);
    }
    }
    var storage = getLocalStorage();
     
    当storage被操作的时候会在document触发storage事件:
    document.addEventListener("storage", function(){
        alert(“Storage changed for “ + event.domain);
    }, false)
     
    使用:
    localStorage.setItem("username", "John");
    alert( "username = " + localStorage.getItem("username"));
     
    不同浏览器桌面或者手机对storage大小限制不同:超出可能导致数据覆盖或者闪退
  • 相关阅读:
    【STL源码学习】STL算法学习之二
    android_SurfaceView 画图
    android_layout_linearlayout(一)
    LINUX_记录(一)
    工作经验之石氏thinking
    android_layout_linearlayout(二)
    android_layout_relativelayout(一)
    两个线程解决一个线程卡之路
    android_layout_relativelayout(二)
    android_layout_framelayout
  • 原文地址:https://www.cnblogs.com/chuangweili/p/5166266.html
Copyright © 2011-2022 走看看