HTMl5 sessionStorage和localStorage
HTMl5 sessionStorage和localStorage
HTMl5 sessionStorage和localStorage一、HTMl5 sessionStorage和localStorage区别
1、sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。
2、localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
3、sessionStorage 和 localStorage的clear()函数的用于清空同源的本地存储数据,比如localStorage.clear(),它将删除所有同源的本地存储的localStorage数据,而对于Session Storage,它只清空当前会话存储的数据。
4、关闭页面会导致sessionStorage的数据被清除,但刷新或重新打开新页面数据还是存在,如果需要存储的只是少量的临时数据。我们可以使用sessionStorage 。
二、HTMl5 sessionStorage和localStorage特点
1、localStorage 默认支持的容量为一个站5M,当调用setItem超过上限时,会触发QuotaExceededError异常。当然有些浏览器支持修改容量上限,但为了兼容其他浏览器,最好按5M的容量来使用。
2、localStorage 是以key-value形式保存数据的,key和value只能是字符串格式。因此数字1保存后,会转换成字符串1。
3、建议使用setItem(), getItem(), removeItem(), clear()来实现写入,读取,删除,清空。
4、如果要保存非字符串的内容,建议使用JSON来处理。写入数据时用JSON.stringify转成字符串,读取数据时用JSON.parse把字符串转为之前的格式。
5、当调用setItem(), removeItem(), clear() 时,可以监听这些事件,方便不同的页面之间更新数据。
三、与cookie的区别
1、Web Storage的概念和cookie相似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,并且每次你请求一个新的页面的时候Cookie都会被发送过去,这样无形中浪费了带宽,另外cookie还需要指定作用域,不可以跨域调用。
2、Web Storage拥有setItem,getItem,removeItem,clear等方法,不像cookie需要前端开发者自己封装setCookie,getCookie。
3、但是Cookie也是不可以或缺的:Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在 ,而Web Storage仅仅是为了在本地“存储”数据而生
四、localStorage和sessionStorage常用的操作
localStorage和sessionStorage都具有相同的操作方法,例如setItem、getItem和removeItem等
1、setItem存储value
用途:将value存储到key字段
用法:.setItem( key, value)
例如
sessionStorage.setItem("key", "value");
localStorage.setItem("site", "eee");
2、getItem获取value
用途:获取指定key本地存储的值
用法:.getItem(key)
例如
var value = sessionStorage.getItem("key");
var site = localStorage.getItem("site");
3、removeItem删除key
用途:删除指定key本地存储的值
用法:.removeItem(key)
例如
sessionStorage.removeItem("key");
localStorage.removeItem("site");
4、clear清除所有的key/value
用途:清除所有的key/value
用法:.clear()
例如
sessionStorage.clear();
localStorage.clear();
5、其他操作方法:点操作和[]
web Storage不但可以用自身的setItem,getItem等方便存取,也可以像普通对象一样用点(.)操作符,及[]的方式进行数据存储,像如下的代码:
var storage = window.localStorage;
storage.key1 = "hello";
storage["key2"] = "world";
console.log(storage.key1);
console.log(storage["key2"]);
6、localStorage和sessionStorage的key和length属性实现遍历
sessionStorage和localStorage提供的key()和length可以方便的实现存储的数据遍历。
例如
var storage = window.localStorage;
for (var i=0, len = storage.length; i < len; i++)
{
var key = storage.key(i);
var value = storage.getItem(key);
console.log(key + "=" + value);
}
7、localStorage和sessionStorage的storage事件
// 监听数据变化,当数据发生变化时,同步数据显示
window.onstorage = function(event){
var status = {}
status.key = event.key;
status.oldValue = event.oldValue;
status.newValue = event.newValue;
status.url = event.url;
status.storage = event.storageArea;
// 执行同步数据处理...
}
五、HTMl5 sessionStorage和localStorage实例
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title> Local Storage and Session Storage </title>
</head>
<body>
<p>姓名:<input type="text" name="name" id="name"></p>
<p>性别:<input type="radio" name="gender" id="gender1" value="1"> 男 <input type="radio" name="gender" id="gender2" value="2"> 女</p>
<p><input type="button" id="saveBtn" value="save"> <input type="button" id="getBtn" value="get"> <input type="button" id="removeBtn" value="remove name"> <input type="button" id="clearBtn" value="clear"> </p>
<script type="text/javascript">
var oStorage = window.localStorage;
function $(id){
return document.getElementById(id);
}
// 保存数据
$('saveBtn').onclick = function(){
oStorage.setItem('name', $('name').value);
if($('gender1').checked==true){
oStorage.setItem('gender', 1);
}else if($('gender2').checked==true){
oStorage.setItem('gender', 2);
}
}
// 获取数据
$('getBtn').onclick = function(){
$('name').value = oStorage.getItem('name');
if(oStorage.getItem('gender')==1){
$('gender1').checked = true;
}else if(oStorage.getItem('gender')==2){
$('gender2').checked = true;
}
}
// 删除数据name
$('removeBtn').onclick = function(){
oStorage.removeItem('name');
}
// 清空数据
$('clearBtn').onclick = function(){
oStorage.clear();
}
</script>
</body>
</html>
- html5新增全局属性(HTML5自定义属性的问题分析)
- html5div例子(html5 外链式实现加减乘除的代码)
- HTML5 <figure> 、<figcaption>标签
- 制作共用的头部和底部html5界面(html5移动端价格输入键盘的实现)
- html5实时通讯(使用Html5 Stream开发实时监控系统)
- html5支持video的视频格式(解决html5中的video标签ios系统中无法播放使用的问题)
- html5导航栏怎么设计(html5 横向滑动导航栏的方法示例)
- html5如何控制内容(html5拖拽应用记录及注意点)
- html5 video标签
- html5弹出输入框下拉菜单(HTML5输入框下拉菜单功能的示例代码)
- ios如何播放html5(Html5移动端适配IphoneX等机型的方法)
- html5怎么设置红色(详解HTML5如何使用可选样式表为网站或应用添加黑暗模式)
- 如何替换html5视频播放器(HTML5自定义视频播放器源码)
- HTML5离线缓存
- 只用html5简单动画代码(HTML5 3D书本翻页动画的实现示例)
- html5显示中心代码(HTML5中的Web Notification桌面通知功能的实现方法)
- 景区游玩,这些安全知识要牢记(这些安全知识要牢记)
- 各地出招烘 热 旅游(各地出招烘热旅游)
- 2021款起亚霸锐到店了 更换车标,竞争宝马X5有戏吗(2021款起亚霸锐到店了)
- 新款起亚霸锐实拍,比普拉多气派,配3.0T V6,引入国内或许能大卖(新款起亚霸锐实拍)
- ()
- 张勇 阿里新任掌门人(阿里新任掌门人)
热门推荐
- php 支付系统(php 实现银联商务H5支付的示例代码)
- dedecms中的有些功能如何修改(织梦DEDECMS中用JS方式调用评论总数的技巧)
- 阿里云服务器怎么设置防御网站(阿里云服务器的一些常用安全优化方法整理)
- dede织梦如何调用栏目(织梦dedecms 自定义修改文章命名规则方法)
- mysql为什么用decimal类型(MySQL decimal unsigned更新负数转化为0)
- css3颜色详解(CSS3混合模式mix-blend-mode/background-blend-mode简介)
- 关闭visual studio 的实时调试
- python如何对参数长度进行限制(python 多个参数不为空校验方法)
- dedecms搜索功能的实现(DEDECMS调用特定ID文章内容的实现方法)
- mysql 死锁原因(MySQL锁等待与死锁问题分析)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9