• 沙里软件

  • ShaliSoft.com [手机站]   办公桌收纳抽屉
  • 首页
  • 博文
  • 演示
  • 管理
  • HTML5的本地存储Web Storage介绍

    网络   2014/4/30 12:41:34

    Web Storage基本介绍

      HTML5 定义了本地存储规范 Web Storage , 提供了两种存储类型 API  sessionStorage 和 localStorage,二者的差异主要是数据的保存时长及数据的共享方式。

        localStorage 一直存储在本地,数据存储是永久的,除非用户或程序对其进行删除操作;

        sessionStorage在会话期内有效,数据在浏览器关闭后自动删除;

        localStorage是基于域的,任何在该域内的页面都可以访问, sessionStorage在保存它的窗口,和由当前窗口创建的新窗口有效,直到相关联的标签页关闭; 

      Web Storage其实是HTML4 中 cookies存储机制的一个改进版本,但是两种机制的功能又不相同:

        cookie在浏览器和服务器间来回传递, sessionStorage和localStorage不会;

        sessionStorage和localStorage的存储空间更大,有更多丰富易用的接口,各自独立的存储空间;

      请注意以上区别,前端面试中,只要问到 html5 相关 基本就这些。

    浏览器的支持情况

      目前所有主流的浏览器都在一定程度上支持 HTML5 的 Web Storage特性。 由下图可以看出,基本上所有现代浏览器都已经支持 Web Storage。

      

      移动浏览器的情况更为乐观

      Android平台和 IOS 平台各自的浏览器都基本上支持 Web Storage 本地存储特性。 目前市场上的移动设备, 除了 android 手机和 iphone 手机外,越来越多的平板电脑面世,而且基本上依赖着两种平台。在移动端使用 Web Storage 我们几乎不需要考虑浏览器是否支持, 当然从代码的严谨来说,建议最好在使用前先检查浏览器是否支持


    if (window.localStorage) {    // 浏览器支持 localStorage}if (window.sessionStorage) {    // 浏览器支持 sessionStorage}


    Web Storage API


    interface Storage {
      readonly attribute unsigned long length;
      DOMString? key(unsigned long index);
      getter DOMString getItem(DOMString key);
      setter creator void setItem(DOMString key, DOMString value);
      deleter void removeItem(DOMString key);
      void clear();
    };


      所谓DOMString: 一个UTF-16字符串,JavaScript正是使用了这种编码的字符串,所以DOMString就等同是JavaScript中的String.

      每个存储对象提供一个 key/value ( 键/值 ) 对列表, 被称为数据项。 key 可以是任意的字符串( 包括空字符串 ),value 也可以是任意的字符串。

      规范定义的接口提供了: 

      localStorage.length                          一个只读的 length属性。 可以知道 localStorage 中存储着多少条数据

      localStorage.setItem(key, val)          存储一条数据

      localStorage.getItem(key)                通过 key 获取该条数据

      localStorage.removeItem(key)          删除一条数据 

      localStorage.clear()                         清空所有 key/value 键值对 items

          

      Storage 只能存储key/value对,而且只支持字符串类型的数据, setItem() 方法传入的值都会自动转化为 string 类型。复合数据类型(Array Object)转化结果同 toString 方法。

       如果你想保存其它类型的数据,在保存的时候需要转化成字符串,在读取时,再转化回来;

      使用 localStorage 存储和读取 JSON 格式数据:


    // 定义JSON格式字符串var userData = {
        name: "zichen",
        age: "24",
        sex: "男",
        adress: "杭州"}// 存储 userData 数据localStorage.setItem("userData", JSON.stringify(userData));// 读取 userData 数据并赋值给变量var newUserData = JSON.parse(localStorage.getItem("userData"));
    
    console.log(newUserData);// 删除 userData localStorage.removeItem("userData");


      sessionStorage 浏览器支持情况同 localStorage , 属性和方法及使用方式也和 localStorage一致。

    Storage 事件监听

      对 Storage 进行存取操作的同时,如果需进行监听,可以使用 HTML5 Web Storage API内置的事件监听器对数据进行监控, Storage中的数据有任何变动,Storage监听器都能捕获,接口定义:


    interface StorageEvent : Event {
      readonly attribute DOMString key;
      readonly attribute DOMString? oldValue;
      readonly attribute DOMString? newValue;
      readonly attribute DOMString url;
      readonly attribute Storage? storageArea;
    };


      key 表示属性中的键名。

      oldValue 更新前的键值。

         newValue 数据更新后的键值。

      url 记录 Storage 事件发生时的源地址。

      StorageArea 指向事件监听对应的 Storage对象

      

      使用 w3c 标准事件注册方法 addEventListener 进行注册监听:

    window.addEventListener(“storage”,    function(e) {
            console.log(e)
        },    true);

     


    阅读(908) 分享(0)

    上一篇: 理解C#中的闭包
    下一篇: 五种类型的程序员

  • 精彩推荐

    ◆ 安装完office后 在组件服务里DCOM配置中找不到
    ◆ 微信清缓存工具,微信怎么清理缓存?
    ◆ 用回溯法解决子集和问题【C#版本】
    ◆ 实测什么物体会影响WIFI信号
    ◆ 利用UC微信分享接口进行WEB微信分享
    ◆ ASP.NET之GridView Eval() 中数据格式化或格式化数据
    ◆ css常用hack语法
    ◆ 面向对象的缺点,你了解了吗
    ◆ 我国首台可人脸识别ATM机发布 不刷脸不能取钱
    ◆ 2G网络要关闭了吗?你还不打算换4G手机?
  • 用心做事 不能唯利是图

    • 吊儿
    • 用QQ联系我17905772
  • 搜索


  • 最新文章

    • 导出Excel 格式 mso-number-format
    • 服务器iis支持tls1.2,windows server 2008 r2 中IIS启用TLS 1.2(安装SSL后用TLS 1.2)
    • MySQL配置优化
    • EditPlus 添加文件比较工具winmerge
    • 滚动悬浮固定JS特效

  • 热门文章

    • php sso单点登录实现代码
    • 中国菜刀(China chopper) 最新黑客工具
    • redis.conf中文版(基于2.4)
    • 搜索引擎名单大全
    • php图片上传类,支持加水印,生成略缩图

  • 最新图库


  • 最新评论


  • 友情链接

  • 沙里软件

  • 最近访客

    Powered by ShaliSoft.com 豫ICP备13008529号

    免责声明:本站部分内容来源于互联网,转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责,也不构成任何其他建议。如果发现侵犯版权,联系QQ17905772进行删除。