会话存储的工作方式和本地存储的工作方式很接近,不同之处在于数据是各个浏览器上下文私有的,会在文档被关闭时移除(注意是被关闭时才移除,刷新是不会移除的)。我们通过全局sessionStorage访问会话存储,它返回一个Storage对象,该对象与本地存储里的是一样的。

sessionStorage案例1:

 <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>sessionStorage</title>
<style> </style>
</head> <body>
<ul>
<li>key:<input id="key" type="text" value=""></li>
<li>value:<input id="value" type="text" value=""></li>
<li>
<input id="add" type="button" value="add">
<input id="clear" type="button" value="clear">
</li>
<li id="countmsg">There are <span id="count"></span> items</li>
</ul>
<table id="data"></table>
<script>
displayData();
document.getElementById('add').onclick=handleButtonPress;
document.getElementById('clear').onclick=handleButtonPress;
function handleButtonPress(e){
switch(e.target.id){
case 'add':
var key=document.getElementById('key').value;
var value=document.getElementById('value').value;
sessionStorage.setItem(key,value);
break;
case 'clear':
sessionStorage.clear();
}
displayData();
}
function displayData(){
var tableItem=document.getElementById('data');
tableItem.innerHTML='';
var itemCount=sessionStorage.length;
document.getElementById('count').innerHTML=itemCount;
for(var i=0;i<itemCount;i++){
var key=sessionStorage.key(i);
var val=sessionStorage[key];
tableItem.innerHTML+='<tr><th>'+key+'</th><td>'+val+'</td></tr>';
}
}
</script>
</body>
</html>

这个案例的工作方式和本地存储里的案例很接近,不同之处在与可见性和寿命受到限制(sessionStorage是临时存储)。这些限制会影响storage事件的处理方式,本地存储里提到storage事件只会在其他同源文档中触发。对于会话存储,这就意味着事件只会在内嵌文档中触发,比如iframe文档,如下案例:

 <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>sessionStorage</title>
<style> </style>
</head> <body>
<ul>
<li>key:<input id="key" type="text" value=""></li>
<li>value:<input id="value" type="text" value=""></li>
<li>
<input id="add" type="button" value="add">
<input id="clear" type="button" value="clear">
</li>
<li id="countmsg">There are <span id="count"></span> items</li>
</ul>
<table id="data"></table>
<iframe src="./storage.html" width="500" height="175"></iframe>
<script>
displayData();
document.getElementById('add').onclick=handleButtonPress;
document.getElementById('clear').onclick=handleButtonPress;
function handleButtonPress(e){
switch(e.target.id){
case 'add':
var key=document.getElementById('key').value;
var value=document.getElementById('value').value;
sessionStorage.setItem(key,value);
break;
case 'clear':
sessionStorage.clear();
}
displayData();
}
function displayData(){
var tableItem=document.getElementById('data');
tableItem.innerHTML='';
var itemCount=sessionStorage.length;
document.getElementById('count').innerHTML=itemCount;
for(var i=0;i<itemCount;i++){
var key=sessionStorage.key(i);
var val=sessionStorage[key];
tableItem.innerHTML+='<tr><th>'+key+'</th><td>'+val+'</td></tr>';
}
}
</script>
</body>
</html>

此案例中iframe引入的storage.html与本地存储那里的storage.html代码一模一样,此处就不做说明。直接copy上面的代码并在浏览器中运行可以查看到效果

会话存储sessionStorage的更多相关文章

  1. python爬虫遇到会话存储sessionStorage

    记录一次爬虫生成链接过程中遇到的sessionStorage存储数据 1.简介 sessionStorage 是HTML5新增的一个会话存储对象,用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标 ...

  2. HTML5 sessionStorage会话存储

    sessionStorage 是HTML5新增的一个会话存储对象,用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据.本篇主要介绍 sessionStorage(会话存储) ...

  3. Token和SessionStorage(会话存储对象)

    sessionStorage数据只在当前标签页共享 存在本地   关闭浏览器后会清除数据(关闭标签页不会清楚) localStorage数据会存在浏览器中  浏览器关了数据也还在 只有清除缓存才会消失 ...

  4. Web存储使用详解(本地存储、会话存储)

    Web存储使用详解(本地存储.会话存储)1,Web存储介绍HTML5的Web存储功能是让网页在用户计算机上保存一些信息.Web存储又分为两种:(1)本地存储,对应 localStorage 对象.用于 ...

  5. HTML5教程之本地存储SessionStorage

    SessionStorage: 将数据保存在session对象中,所谓session是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间会话,也就是用户浏览这个网站所花费的时间就是sess ...

  6. express中的会话存储方式

    会话存储需要用的express-session包 app.use(require('express-sessiion')()) express-session接收带有如下选项的配置对象: key;存放 ...

  7. localStorage(本地存储器)、sessionStorage(会话存储)

      设置:localStorage.setItem("token", JSON.parse(res).data.token);   获取:that.token = localSto ...

  8. 本地存储sessionStorage 、 localStorage 、cookie整理

    sessionStorage . localStorage .cookie 的区别 sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可 ...

  9. H5本地存储sessionStorage和localStorage的区别

    sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁.因此sessionStorage不是一种持久化的本地 ...

随机推荐

  1. NDK开发之<cpu-features.h模块功能>

    今天研究下cpufeatures库,它是一个轻量级的展示CPU特性的模块,调用者在运行时候可以根据这个库提供的简单接口获取到目标机的CPU架构和特性. 一.代码路径: $NDK_ROOT/source ...

  2. inventor安装未完成,某些产品无法安装的解决方法

    inventor提示安装未完成,某些产品无法安装该怎样解决呢?,一些朋友在win7或者win10系统下安装inventor失败提示inventor安装未完成,某些产品无法安装,也有时候想重新安装inv ...

  3. Nginx笔记总结十三:sub_filter内容替换

    Nginx变异安装加上参数 --with-http_sub_module 配置文件: location ~* ^/portalproxy/([-]*)/portal(.*)$ { #sub_filte ...

  4. 简单了解char和varchar的区别

    一.CHAR和 VARCHAR的区别? 1.CHAR有固定的长度,VARCHAR属于可变长度的字符类型. 2.比如,写入内容到CHAR(10)里,如果内容占用的空间不够10,则会用空格字符补足. 二. ...

  5. nodejs日常总结

    1.node -v 查看当前node版本 2.npm root -g 查看npm安装路径(还有通过npm安装的vue-cli的路径) 默认: /usr/local/lib/node_modules r ...

  6. js如何把a标签里面的值传递到函数里面

    ----------------------a标签如何定 如何传参到函数---------------------- 1.<a></a>标签 如何传参到函数 <a cla ...

  7. Java 关于线程的面试题及答案

    一.职场可能碰到的关于线程的面试题: 1. 什么是线程? 线程是程序中一个单一的顺序控制流程.进程内有一个相对独立的.可调度的执行单元,是系统独立调度和分派CPU的基本单位指令运行时的程序的调度单位. ...

  8. 你还记得2017年火爆的VR街机店,这一年他们过得还好吗?

    对于当下太过急于成功.一夜暴富的人们来说,似乎总是会急不可耐地去抓住每一个有可能成为大势的风口.在这份普遍存在的浮躁心理下,蕴含着极大的不确定性--既让大众认识到太多的创新产品和服务,也让很多参与者痛 ...

  9. 用新架构适配MI3中遇到的各种坑

    用新架构适配MI3中遇到的各种坑 首先不得不说hendy架构的强大之处, mi3也直接开机但是遇到各种坑,不能怪架构不够强大,只有说miui定制化太高.下面详细说一下mi3适配中的各种坑.有些坑会附带 ...

  10. ES6学习笔记(三):教你用js面向对象思维来实现 tab栏增删改查功能

    前两篇文章主要介绍了类和对象.类的继承,如果想了解更多理论请查阅<ES6学习笔记(一):轻松搞懂面向对象编程.类和对象>.<ES6学习笔记(二):教你玩转类的继承和类的对象>, ...