HTML5的WebStorage

WebStorage是什么?

WebStorage是HTML5中本地存储的解决方案之一。
WebStorage两个主要目标:
(1)提供一种在cookie之外存储会话数据的路径。
(2)提供一种存储大量可以跨会话存在的数据的机制。

在WebStorage概念引入之前,浏览器兼容的本地存储方案只有使用cookie。

由于cookie的局限性:浪费带宽、存储大小有限、操作复杂等,转而使用WebStorage存储机制。

cookie的缺陷

数据大小:cookie的数据大小限制在4kb左右
安全问题:HTTP请求中的cookie是明文传递的,容易造成安全问题
网络负担:cookie会被附加在每个HTTP请求中,在HttpRequest 和HttpResponse的header中都是要被传输的,会增加一些不必要的流量损失。

localStorage和sessionStorage :

HTML5的WebStorage提供了两种API:localStorage(本地存储)和sessionStorage(会话存储)。

localStorage:将数据保存在客户端本地的硬件设备,即使浏览器被关闭了该数据依然存在,下次打开浏览器访问网站时可以继续使用。除非主动删除数据,否则数据是永远不会过期的。

1.localStorage.getItem(key):获取指定key本地存储的值
2.localStorage.setItem(key,value):将value存储到key字段
3.localStorage.removeItem(key):删除指定key本地存储的值
4.localstroage.clear();删除所有值

获取方式:localStorage:window.localStorage;
应用场景:localStoragese:常用于长期登录(+判断用户是否已登录),适合长期保存在本地的数据。

sessionStorage:将数据保存在Session对象中。

获取方式:sessionStorage:window.sessionStorage;
应用场景:sessionStorage:敏感账号一次性登录;

相同点:
localStorage和sessionStorage一样都是用来存储客户端临时信息的对象,保存在客户端,只能存储字符串类型的对象。不同浏览器无法共享localStorage或sessionStorage中的信息。
区别:
sessionStorage为临时保存,localStorage为永久保存。

使用实例

<!DOCTYPE html>
<html>
    <head>
    <meta charset="UTF-8">
    <title>Web Storage 示例</title>
    </head>
    <body>
    <h1>Web Storage 示例</h1>
    <p id="msg"></p>
    <input type="text" id="input" />
    <input type="button" value="保存数据" οnclick="saveStorage('input');" />
    <input type="button" value="读取数据" οnclick="loadStorage('msg');" />
    </body>
</html>

单击"保存数据"按钮时调用saveStorage方法保存数据,单击"读取数据"按钮时调用loadStorage方法调用数据:

//sessionStorage 示例  (保存一个会话周期:从打开浏览器——到关闭浏览器窗口)
function saveStorage(id){
    var target=document.getElementById(id);
    var str=target.value;
    sessionStorage.setItem("message",str);
    //或者sessionStorage.message=str;
}
function loadStorage(id){
    var target=document.getElementById(id);
    var msg=sessionStorage.getItem("message");
    //或者var msg=sessionStorage.message;
    target.innerHTML=msg;
}
//localStorage 示例(可永久保存)    
function saveStorage(id){
    var target=document.getElementById(id);
    var str=target.value;
    localStorage.setItem("message",str);
    //或者localStorage.message=str;
}
function loadStorage(id){
    var target=document.getElementById("msg");
    var msg=localStorage.getItem("message");
    //或者var msg=localStorage.message;
    target.innerHTML=msg;
}

这个脚本文件分别使用了sessionStorage与localStorage两种方法。
这两种方法都是当用户在input文本框中输入内容后单击"保存数据"按钮保存数据,单击"读取数据"按钮读取保存后的数据。
但是两种方法对数据的处理方式不一样,在使用sessionStorage方法时,如果关闭了浏览器,这个数据就丢失了,下一次打开浏览器单击"读取数据"按钮时,读取不到任何数据。在使用localStorage方法时,即使浏览器关闭了,下次打开浏览器时仍然能够读取保存的数据。不过,数据保存是按不同的浏览器分别进行保存的,也就是说,打开别的浏览器是读取不到在这个浏览器中保存的数据的。

(1)sessionStorage

保存数据的方法:

sessionStorage.setItem(“key”,“value”);
//或者写成
sessionStorage.key=“value”;

读取数据的方法:

变量=sessionStorage.getItem(“key”);
//或者写成
变量=sessionStorage.key;

(2)localStorage

保存数据的方法:

localStorage.setItem(“key”,“value”);
//或者写成
localStorage.key=“value”;

读取数据的方法:

变量=localStorage.getItem(“key”);
//或者写成
变量=localStorage.key;

在保存数据时,若使用sessionStorage读取或保存数据,则使用sessionStorage对象并调用该对象的读写方法;
若使用localStorage读取或保存数据,则使用localStorage对象并调用该对象的读写方法。

在进行读写时,不管是哪个对象,都可以通过该对象的getItem方法来读取数据,也可以该对象的自定义属性值读取数据;可以通过该对象的setItem方法保存数据,也可以通过该对象的自定义属性值保存数据。保存数据时按“键名/键值”的形式进行保存。当通过该对象的getItem方法读取数据时,将参数指定为键名,该方法返回键值;当通过该对象的自定义属性值读取数据时,可以将该对象的某个自定义属性名作为键名,访问该自定义属性的属性值即可得到键值;当通过该对象的setItem方法保存数据时,将第一个参数指定为键名,将第二个参数指定为键值;当通过该对象的自定义属性值保存数据时,可以将该对象的某个自定义属性名作为键名,然后直接将该自定义属性值设置为键值。

在保存数据时不允许重复保存相同的键名。保存后可以修改键值,但不允许修改键名(只能重新取键名,然后再保存键值)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值