登录  /  注册
首页 > web前端 > H5教程 > 正文

HTML5客户端数据存储Web Storage—localStorage与sessionStorage

黄舟
发布: 2017-02-27 15:25:40
原创
1637人浏览过


html5提供了在客户端存储数据的新方法web storage
类似于html4中的cookie
不过它要强大的多

Cookie

先来简单复习一下之前使用的cookie

cookie存储数据到用户设备上,存储的数据量较小只有4KB
可以通过navigator.cookieEnabled检测是否开启了cookie

  • 设置cookie document.cookie = 'key=value';

  • 获取cookie document.cookie;

  • 删除cookie document.cookie = "key=value;max-age=0";

  • 设置max-age存储期限 document.cookie = "key=value;max-age=1000"; // 1000秒

  • 设置expires存储期限

var timestamp = (new Date()).getTime() + 10000;var expires = new Date(timestamp).toGMTString();
//或toUTCStringdocument.cookie = "key=value;expires="+expires;
登录后复制
  • 获取具体cookie值

function getCookie(name) {
    var name = name + "=";    
    var ary = document.cookie.split(';');    
    for(var i = 0; i < ary.length; i++){        
    var c = ary[i];        
    while (c.charAt(0) == &#39; &#39;){
          c = c.substring(1);
        }        
        if (c.indexOf(name) != -1){          
        return c.substring(name.length, c.length);
        }
    }    return "";
}
登录后复制

Web Storage

Web Storage又分为两种
localStorage和sessionStorage
它们的区别是:

  • localStorage存储的是永久数据,除非手动删除

  • sessionStorage存储的是临时数据,窗口关闭就会消失

简单使用

Web Storage只能存储字符串数据
我觉得可以把它们理解为JSON
使用方法都是类似的,已localStorage为例

localStorage.name = &#39;payen&#39;;
localStorage.info = JSON.stringify({name: &#39;payen&#39;, age: 20});
console.log(localStorage.name);
console.log(JSON.parse(localStorage.info));
登录后复制

要存储的数据名就是localStorage的属性名
普通的字符串正常存储就可以了
对象数据可以利用JSON.stringify()将其转换为字符串格式
使用的时候再用JSON.parse()转换回对象格式
(如果直接存储对象的话,它会被强制转换为字符串 “[object Object]”)


删除数据直接delete就好

delete localStorage.name;delete localStorage.info;
登录后复制

如果不删除的话,localStorage里面的数据就会一直存在于你的浏览器了

API

localStorage和sessionStorage还提供了简单的API
类似于一个客户端的数据库
(API都是相同的)
常用的有以下几个:

  • 保存数据 setItem(key,value)

  • 读取数据 getItem(key)

  • 删除单个数据 removeItem(key)

  • 清空全部数据 clearItem()

  • 获取数据索引 key(index)

实例

通过这个,我们可以写个简易的通讯录

<p id="container">
    <br>
    <label for="username">姓名:</label>
    <input type="text" id="username" name="username">
    <br>
    <label for="mobilephone">手机:</label>
    <input type="text" id="mobilephone" name="mobilephone">
    <br><br>
    <input type="button" onclick="add()" id="add" value="增加联系人">
    <br><br>
    <hr>
    <label for="search">输入姓名:</label>
    <input type="text" id="search" name="search">
    <br><br>
    <input type="button" onclick="find()" id="find" value="查找手机号">
    <p id="result"><br></p></p>
登录后复制
#container {    
border: 2px solid gray;    
width: 320px;    
text-align:center;}
登录后复制

通讯录-1

JavaScript中就是实现这两个函数

var user = document.getElementById(&#39;username&#39;),
    phone = document.getElementById(&#39;mobilephone&#39;),
    search = document.getElementById(&#39;search&#39;),
    result = document.getElementById(&#39;result&#39;);var add = function(){
    var u = user.value,
        p = phone.value,
        l = localStorage.length;    if(u !== &#39;&#39; && p !== &#39;&#39;){
        localStorage.setItem(u, p);
        user.value = &#39;&#39;;
        phone.value = &#39;&#39;;
        alert(&#39;添加成功&#39;);
    }
};var find = function(){
    var s = search.value,
        r = localStorage.getItem(s);    if(s !== &#39;&#39; && r){
        result.innerHTML = r;
    }
};
登录后复制

通讯录-2

输入姓名和手机添加联系人
然后在下面输入联系人姓名我们可以查找到手机号

通讯录-3


当然这个通讯录十分简易了
也可以为它添加显示通讯录全部信息
删除联系人功能等等

cookie与Web Storage区别

最后说说Html5的Web Storage和Html4的cookie的区别

特点 Cookie Web Storage
生命周期 一般由服务器生成并设置时间;浏览器生成默认关闭浏览器失效 local:不清除则永久保存;session:关闭页面或浏览器失效
数据大小 4KB 官方推荐5MB
通信 携带在HTTP头中(过多使用有性能问题) 仅在浏览器存储,不参与通信
使用 原生接口不友好,需要手动封装 原生接口友好

 以上就是HTML5客户端数据存储Web Storage—localStorage与sessionStorage的内容,更多相关内容请关注PHP中文网(www.php.cn)!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号