博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web Storage--HTML5本地存储
阅读量:5756 次
发布时间:2019-06-18

本文共 4874 字,大约阅读时间需要 16 分钟。

什么是Web Storage

Web Storage是HTML5里面引入的一个类似于cookie的本地存储功能,可以用于客户端的本地存储,其相对于cookie来说有以下几点优势:

  1. 存储空间大:cookie只有4KB的存储空间,而Web Storage在官方建议中为每个网站5M。

  2. 可选择性强:Web Storage分为两种:sessionStoragelocalStorage

Web Storage的使用方法

在使用上,session Storagelocal Storage大同小异,只是session Storage是将数据临时存储在session中,浏览器关闭,数据随之消失。而local Storage则是将数据存储在本地,理论上来说数据永远不会消失,除非人为删除。

API:

  • 保存数据 localStorage.setItem( key, value ); sessionStorage.setItem( key, value );

  • 读取数据 localStorage.getItem( key ); sessionStorage.getItem( key );

  • 删除单个数据localStorage.removeItem( key ); sessionStorage.removeItem( key );

  • 删除全部数据localStorage.clear( ); sessionStorage.clear( );

  • 获取索引的keylocalStorage.key( index ); sessionStorage.key( index );

注意:Web Storage的API只能操作字符串


在使用Web Storage之前,我们需要注意以下几点:

  1. 仅支持支持IE8及以上版本

  2. 由于只能对字符串类型数据进行操作,所以对一些JSON对象需要进行转换

  3. 因为是明文存储,所以毫无隐私性可言,绝对不能用于存储重要信息

  4. 会是浏览器加载速度在一定程度上变慢

  5. 无法被爬虫程序爬取

  6. 使用Web Storage之前,请加上以下代码,对浏览器对Web Storage的支持性进行判断

    if(window.localStorage){//或者window.sessionStorage         alert("浏览器支持localStorage")    //主逻辑业务}else{          alert("浏览不支持localStorage")    //替代方法}

我们来写一个学生管理小程序用于演示Web Storage的基本用法

简单的html页面先准备好





在这个程序里面我们将实现增删查的基本功能,修改数据的功能相信大家看完后自己就能写出来。

接下来开始写方法:

存储

//利用localStorage存储数据function save() {    var contact = new Object();    var Name = document.getElementById("name").value;    var Sex = document.getElementById("sex").value;    var Num = document.getElementById("num").value;    var Add = document.getElementById("add").value;    var Tel = document.getElementById("tel").value;    if(JTrim(Name) != "" && JTrim(Sex) != "" && JTrim(Num) != "" && JTrim(Add) != "" && JTrim(Tel) != "") {        contact.name = Name;        contact.sex = Sex;        contact.num = Num;        contact.add = Add;        contact.tel = Tel;        var str = JSON.stringify(contact);//对JSON对象进行处理,用于从一个对象解析出字符串        if(window.localStorage) {            localStorage.setItem(contact.name,str);        } else {            alert("您暂时还无法使用本功能");            return;        }    } else {        alert("请输入内容");    }}

其中用到了Trim()这个方法,用于判断输入是否为空

function JTrim(s) {    return s.replace(/(^\s*)|(\s*$)/g, "");}

展示所有信息

function loadAll() {    var resource = document.getElementById("list");    if(window.localStorage) {        var result = "
"; result += "
"; for(var i = 0;i < localStorage.length; i++) { var Name = localStorage.key(i);//用于得到索引的key,在这个程序里,key为name var str = localStorage.getItem(Name); var contact = JSON.parse(str);//对JSON对象进行处理,用于从一个字符串中解析出JSON对象 result += "
"; } result += "
姓名 性别 学号 家庭住址 电话号码
"+contact.name+" "+contact.sex+" "+contact.num+" "+contact.add+" "+contact.tel+"
"; resource.innerHTML = result; } else { alert("您暂时还无法使用本功能"); return; }}

查询

function search() {    var resource = document.getElementById("tato");    var search_name = document.getElementById("search_name").value;    if(window.localStorage) {        var str = localStorage.getItem(search_name);        if(str != null) {            var result = "
"; result += "
"; var contact = JSON.parse(str); result += "
"; result += "
姓名 性别 学号 家庭住址 电话号码
"+contact.name+" "+contact.sex+" "+contact.num+" "+contact.add+" "+contact.tel+"
"; resource.innerHTML = result; } else { alert("系统无此人"); return; } } else { alert("您暂时还无法使用本功能"); return; } }

删除

function del() {    var del_name = document.getElementById("del_name").value;    if(window.localStorage) {        var result = localStorage.getItem(del_name);        localStorage.removeItem(del_name);        if(result != null) {            alert("删除成功");                   } else {            alert("系统无此人");            return;        }    } else {        alert("您暂时还无法使用本功能");        return;            }}

在这里如果想对所有数据做删除处理则只需将localStorage.removeItem();换成localStorage.clear();即可

--魔改了一下界面,开心就好=.=


现在让我们在浏览器的开发者工具里面看一看Web Storage到底是怎么存储的

Web Storage

我们可以在chrome开发者工具里面找到Application这个选项,其中就有今天的主角:Local StorageSession Storage

现在输入一些数据

数据输入

点击提交之后我们立刻就能在Local Storage里面看到明文存储的数据(后面的value是以JSON对象来存储的,所以在对其进行操作的时候需要转换格式)

localstorage数据

总结

Web Storage固然简单实用,但是数据的明文存储实在是硬伤,所以各位使用之前请三思

转载地址:http://zgvkx.baihongyu.com/

你可能感兴趣的文章
Comment2Wechat —— Typecho 插件
查看>>
Apache下.htaccess文件配置及功能介绍
查看>>
Magento XML cheatsheet
查看>>
Egg 2.19.0 发布,阿里开源的企业级 Node.js 框架
查看>>
sap的function module发布成web service后fm再次修改的处理 ...
查看>>
Kubernetes 弹性伸缩全场景解析 (四)- 让核心组件充满弹性 ...
查看>>
使用MySQLTuner-perl对MySQL进行优化
查看>>
ubuntu18.10手动安装mysql5.5
查看>>
SAP S/4HANA extensibility扩展原理介绍
查看>>
Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化 ...
查看>>
开发网络视频直播系统需要注意的地方
查看>>
haproxy mysql实例配置
查看>>
强化学习的未来— 第一部分
查看>>
掌握Python系统管理-调试和分析脚本1-debugging
查看>>
TableStore:用户画像数据的存储和查询利器
查看>>
2019 DockerCon 大会即将召开,快来制定您的专属议程吧!
查看>>
15分钟构建超低成本数据大屏:DataV + DLA
查看>>
南大领衔!国内高校团队登上美国《科学进展》杂质,发布基因编辑可控技术...
查看>>
当下一对一直播源码市场空间
查看>>
1月9日云栖精选夜读 | Mars 算法实践——人脸识别
查看>>