HTMl5的存储方式sessionStorage和localStorage详解
因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
一、web storage和cookie的区别
Web Storage的概念和cookie相似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,并且每次你请求一个新的页面的时候Cookie都会被发送过去,这样无形中浪费了带宽,另外cookie还需要指定作用域,不可以跨域调用。
除此之外,Web Storage拥有setItem,getItem,removeItem,clear等方法,不像cookie需要前端开发者自己封装setCookie,getCookie。
但是Cookie也是不可以或缺的:Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在 ,而Web Storage仅仅是为了在本地“存储”数据而生(来自@otakustay 的纠正)
二、html5 web storage的浏览器支持情况
浏览器的支持除了IE7及以下不支持外,其他标准浏览器都完全支持(ie及FF需在web服务器里运行),值得一提的是IE总是办好事,例如IE7、IE6中的UserData其实就是javascript本地存储的解决方案。通过简单的代码封装可以统一到所有的浏览器都支持web storage。
要判断浏览器是否支持localStorage可以使用下面的代码:
代码如下:
alert("浏览支持localStorage")
}
else
{
alert("浏览暂不支持localStorage")
}
//或者 if(typeof window.localStorage == 'undefined'){ alert("浏览暂不支持localStorage") }
三、localStorage和sessionStorage操作
localStorage和sessionStorage都具有相同的操作方法,例如setItem、getItem和removeItem等
localStorage和sessionStorage的方法:
setItem存储value
用途:将value存储到key字段
用法:.setItem( key, value)
代码示例:
代码如下:
localStorage.setItem("site", "js8.in");
getItem获取value
用途:获取指定key本地存储的值
用法:.getItem(key)
代码示例:
代码如下:
var site = localStorage.getItem("site");
removeItem删除key
用途:删除指定key本地存储的值
用法:.removeItem(key)
代码示例:
代码如下:
localStorage.removeItem("site");
clear清除所有的key/value
用途:清除所有的key/value
用法:.clear()
代码示例:
代码如下:
localStorage.clear();
四、其他操作方法:点操作和[]
web Storage不但可以用自身的setItem,getItem等方便存取,也可以像普通对象一样用点(.)操作符,及[]的方式进行数据存储,像如下的代码:
代码如下:
var storage = window.localStorage; storage.key1 = "hello";
storage["key2"] = "world";
console.log(storage.key1);
console.log(storage["key2"]);
五、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);
}
六、storage事件
storage还提供了storage事件,当键值改变或者clear的时候,就可以触发storage事件,如下面的代码就添加了一个storage事件改变的监听:
代码如下:
window.addEventListener("storage",handle_storage,false);
}
else if(window.attachEvent)
{
window.attachEvent("onstorage",handle_storage);
}
function handle_storage(e){
if(!e){e=window.event;}
}
storage事件对象的具体属性如下表:
Property | Type | Description |
key | String | The named key that was added, removed, or moddified |
oldValue | Any | The previous value(now overwritten), or null if a new item was added |
newValue | Any | The new value, or null if an item was added |
url/uri | String | The page that called the method that triggered this change |
转载于:https://www.cnblogs.com/lenther2002/p/5047094.html
HTMl5的存储方式sessionStorage和localStorage详解相关推荐
- 数据类型及其存储方式(C语言详解)
数据类型及其存储方式 数据类型 整型家族 浮点型家族 构造类型 指针类型 空类型 数据的存储 整型存储 原码.反码.补码 大小端存储模式 浮点数存储 在c语言中数据类型基本可分为:整型家族.浮点型家族 ...
- 视频会议系统的种类、选择方式、未来发展趋势详解
视频会议系统的种类.选择方式.未来发展趋势详解 视频会议现在已经非常的方便,解决远距离沟通问题,而视频会议系统主要分为硬件视频会议系统与软件视频会议系统两大类,不过这些年来随着互联网浪潮的推进,很难再 ...
- Spring Boot项目(Maven\Gradle)三种启动方式及后台运行详解
Spring Boot项目三种启动方式及后台运行详解 1 Spring Boot项目三种启动方法 运行Application.java类中的Main方法 项目管理工具启动 Maven项目:mvn sp ...
- Java操作数据库方式二DBCP使用详解
##概述 DBCP的全称是:DataBase connection pool,翻译是:数据库连接池. 在Java操作数据库方式一JDBC使用详解中说到直接使用JDBC非常消耗资源.为了避免频繁关闭链接 ...
- 汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解
原文链接:汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解 PLC数据存储原理简介 H123U小型PLC内部采用的是32位的处理器,PLC中的数据处理和电脑中的数据处理基本是一致的 ...
- CSS3 渐变新特性和HTML5 Canvas画布背景渐变实现方法详解
CSS3 渐变新特性和HTML5 Canvas画布背景渐变实现方法详解 大家好,又见面了,感觉我上一篇博客对部分同学都挺有帮助的,于是我决定继续写下去,会继续的解析知识点让大家更容易理解,希望能给大家 ...
- 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装爬虫框架Scrapy(离线方式和在线方式)(图文详解)...
不多说,直接上干货! 参考博客 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装OpenCV(离线方式和在线方式)(图文详解) 第一步:首先,提示升级下pip 第二步 ...
- php远程连接真机实现,搭建nextcloud私有云存储网盘的教程详解
Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步.共享.版本控制.团队协作等功能.它的客户端覆盖了Windows ...
- 浏览器的存储方式——cookie,localStorage,sessionStorage
文章目录 一.cookies 二.sessionStorage.localStorage 总结 一.cookies 一.概念 cookie是客户端与服务器端进行会话使用的一个能够在浏览器本地化存储的技 ...
最新文章
- 如何在windows 10 x64安装佳能 CP900 驱动
- 用泛型实现参数化类型
- synchronized锁升级
- 【联邦学习】FATE 集群部署 step3
- mysql删除端口配置文件,linux中的Mysql的安装、重置安装密码、修改权限详解
- 332. 重新安排行程(回溯算法)
- php创蓝253四要素认证_PHP下基于创蓝253接口的短信发送
- Springboot配置拦截器出现“No mapping for GET“静态资源的情况
- boost::sort模块实现弦平面稳定测试
- Angular Universal 学习笔记 - 客户端渲染和服务器端渲染的区别
- selenium rc java_selenium笔记一--selenium RC+JAVA环境搭建
- chrome访问不了go语言中文网
- 用C#打造quot;QQ对战平台挤房器quot;
- Android蓝牙通讯(服务端、客户端)
- 国美易卡围绕数据云等科技,国美易卡解决问题
- __attribute__((weak)) 简介及作用
- 直播美颜sdk免费版有吗?为什么美颜sdk没有免费版?
- 《STL源码剖析》-- stl_construct.h
- S/4 HANA标准表MARC增强字段
- Linux内核版本代号
热门文章
- mysql n 识别_mysql – 不能有“不识别”的N:M关系吗?
- java 修改ini文件_Java读取和修改ini配置文件
- (找规律)Magic of David Copperfield
- sql server限制查询条数_18. Django 2.1.7 查询集 QuerySet
- python 子线程返回值_python-从线程返回值
- 对于计算机网络技术的课程,计算机网络技术课程剖析.doc
- IDEA中运行springboot+vue项目设置terminal路径
- 【CSDN】-官方插件推荐懒人必备神器
- dbsync for oracle ms sql,DBSync for Firebird and MSSQL
- 区域显示触发_Nature Communications:地幔数据显示可氧化的火山气体的减少可能触发了大氧化事件...