HTML5 localStorage and sessionStorage

2023-05-16

HTML5 提供两种web存储方法,localStorage 与 sessionStorage


localStorage 与 sessionStorage 区别

localStorage没有过期时间,只要不clear或remove,数据会一直保存。

sessionStorage 针对一个session进行数据存储,生命周期与session相同,当用户关闭浏览器后,数据将被删除。


特点:

1.localStorage 默认支持的容量为一个站5M,当调用setItem超过上限时,会触发QuotaExceededError异常。当然有些浏览器支持修改容量上限,但为了兼容其他浏览器,最好按5M的容量来使用。

2.localStorage 是以key-value形式保存数据的,key和value只能是字符串格式。因此数字1保存后,会转换成字符串1。

3.localStorage 的写入与读取写法有以下几种:

localStorage.name = 'fdipzone';
name = localStorage.name;

localStorage['name'] = 'fdipzone';
name = localStorage['name'];

localStorage.setItem('name', 'fdipzone');
name = localStorage.getItem('name');
localStorage[key] = value写法主流浏览器都支持,官方并没有说明那一种写法是标准。但如果执行以下的代码就使localStorage失效。

localStorage.setItem = null;
localStorage.getItem = null;
localStorage.removeItem = null;
localStorage.clear = null;

因此,建议使用setItem(), getItem(), removeItem(), clear()来实现写入,读取,删除,清空。

4.如果要保存非字符串的内容,建议使用JSON来处理。写入数据时用JSON.stringify转成字符串,读取数据时用JSON.parse把字符串转为之前的格式。


例子1:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<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>

例子2:使用 JSON.stringify 和 JSON.parse 封装数据

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<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="clearBtn" value="clear"> </p>

  <script type="text/javascript">
	var oStorage = window.localStorage;

	function $(id){
		return document.getElementById(id);
	}

	// 保存数据
	$('saveBtn').onclick = function(){
		var name = $('name').value;
		var gender;
		if($('gender1').checked==true){
			gender = 1;
		}else if($('gender2').checked==true){
			gender = 2;
		}

		var data = {};
		data['name'] = name;
		data['gender'] = gender;

		oStorage.setItem('data', JSON.stringify(data));
	}

	// 获取数据
	$('getBtn').onclick = function(){
		var data = JSON.parse(oStorage.getItem('data'));

		if(data){
			var name = data['name'];
			var gender = data['gender'];

			$('name').value = name;

			if(gender==1){
				$('gender1').checked = true;
			}else if(gender==2){
				$('gender2').checked = true;
			}
		}
	}

	// 清空数据
	$('clearBtn').onclick = function(){
		oStorage.clear();
	}

  </script>

 </body>
</html>

监听localStorage的值,当发生变化时同步页面数据

当调用setItem(), removeItem(), clear() 时,可以监听这些事件,方便不同的页面之间更新数据。

// 监听数据变化,当数据发生变化时,同步数据显示
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;

	// 执行同步数据处理...
}

页面数据同步例子:点击查看


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML5 localStorage and sessionStorage 的相关文章

  • 主干本地存储:无法读取未定义的属性“延迟”

    我正在尝试使骨干应用程序与本地存储插件一起使用 我在主干库之后添加了该库 我将以下行添加到我的集合中 window ProductCollection Backbone Collection extend model Product loc
  • localStorage 内容带有时间戳以自行删除

    我想要一个本地存储内容的计时器 例如我有一个动态更新的 DIV div p test p div 并设法使用以下代码将其作为 html 块添加到 localStorage function localStorage homeNews JSO
  • 从 localStorage 检索时,Javascript 中是否可以有等待动画?

    了解 Javascript localStorage API 是同步的 因此是阻塞的 是否有任何解决方法可以允许显示一个在运行期间不会冻结的等待动画getItem or setItem 运营 如果从本地存储获取 300kB 数据并解析它JS
  • 使用 Ionic 的本地存储

    我正在尝试将我的应用程序连接到本地存储 以便我可以将数据保存在用户设备上 并且不会在每次应用程序关闭时重置 我唯一的问题是我无法弄清楚如何将本地存储实际链接到我的对象数组 任何帮助是极大的赞赏 我添加了我认为相关的任何代码 app js I
  • 如何使用 HTML5 本地存储保存表单中的数据?

    我有一个表单可以登录到一个网站 但不能登录到我的网站 我希望它们通过 HTML5 本地存储保存在我的网站中的表单数据 但不知道如何 任何想法 我的表格是这样的
  • 我可以从 Chrome 扩展程序访问站点的 localStorage 吗?

    我的 chrome 扩展有两种状态 1 某些站点在localStorage 另一个域 中有身份验证数据 所以我必须显示主窗口 2 没有身份验证数据 因此我必须显示带有登录名和密码表单的窗口 为了定义是否提供身份验证数据 我想检查他的 loc
  • 从 webWorker 访问 localStorage

    WebWorker 可以访问 localStorage 吗 如果不是为什么不呢 从安全角度来看有问题吗 Web Worker 只能访问以下内容 XMLHttpRequest https developer mozilla org en US
  • navigator.webkitPersistentStorage.requestQuota 是否适用于 IndexedDB?

    使用今天最新版本的 Android Chrome 我可以使用以下命令请求持久性 IndexedDB 存储吗 navigator webkitPersistentStorage requestQuota var requestedBytes
  • json.stringify 不处理对象方法

    我正在尝试开发一个可以在大多数现代浏览器 Chrome Firefox IE 9 Safari Opera 中运行的离线 HTML5 应用程序 由于 Safari 尚不支持 IndexedDB 并且已弃用 WebSQL 因此我决定使用 lo
  • 无法从 browser.storage.local.get 提取数据

    尝试实现 Firefox 插件 扩展版本 64 0 的选项页面 我在用browser storage local set 存储数据 但是当我使用browser storage local get拉取数据 结果是
  • HTML5网络存储:不同网站可以互相覆盖用户计算机上的数据吗?

    我有一些关于 HTML5 存储概念的问题 我浏览了 w3c 规范 书籍和教程 但我仍然对某些概念有点不清楚 假设我访问网站 A 一些 JavaScript 在我的浏览器中运行 用于设置键值对 例如 username deepak 然后我访问
  • 如何在 Angular 应用程序中存储身份验证令牌

    我有一个与 REST API 服务器通信的 Angular 应用程序 SPA 我有兴趣找到存储从 API 服务器返回的访问令牌的最佳方法 以便 Angular 客户端可以使用它来验证未来的请求到 API 出于安全原因 我想将其存储为浏览器会
  • 如何将令牌存储在Android的本地或会话存储中?

    我正在创建一个与 SOAP Web 服务交互以从数据库获取数据的应用程序 当用户成功登录时 它会通过网络服务生成一个令牌 稍后在其他活动中调用 Web 服务方法时将需要此令牌 我的问题是 如何在需要时将该令牌传递给下一个活动并维护它直到用户
  • 将 localStorage 数据设置为只读

    我正在开发 AngularJs 应用程序 我将数据存储在 localStorage 中 localStorageService set selectedUserCategory Circle 现在当我看到浏览器的 localStorage
  • 是否可以在 Windows 应用商店应用程序中的用户之间共享数据?

    我很确定我知道这个问题的答案 非常大的否 但是是否可以在相同的应用程序但是 Windows 运行时环境中有多个用户 Windows 登录 而不是 Microsoft Store 用户 本地数据文件夹是相对于每个登录用户而言的 所以乍一看这似
  • 从本地存储保存和检索日期

    这似乎是一个愚蠢的问题 但我在理解 Typescript 方面遇到了相当困难 我有以下代码 var date new Date window localStorage setItem date date 如您所见 我正在生成今天的日期并通过
  • 从本地存储中删除数组项

    我在本地存储中存储了一个数组 将其解析为 json 我将它放回到一个对象中 从中删除了一些项目 我需要使用本地存储中的新值更新密钥 var counter 0 1 2 var count counter 0 var questions lo
  • 从本机 iPhone 应用程序访问 UIWebView 本地存储数据

    我正在编写一个包含 UIWebView 组件的本机 iPhone 应用程序 该组件访问互联网 Web 应用程序 并且该 Web 应用程序使用 HTML5 本地存储离线存储数据 是否可以从本机应用程序访问此本地存储数据 我想做类似的事情 简而
  • 如何保护Web应用程序免受cookie窃取攻击?

    我的网络应用程序的身份验证机制目前非常简单 当用户登录时 网站会发回一个存储的会话 cookie 使用localStorage 在用户的浏览器上 但是 此 cookie 很容易被窃取并用于从另一台计算机重播会话 我注意到其他网站 例如 Gm
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后

随机推荐

  • VM ubuntu ping unknow host 解决方法

    例如网关地址为 xff1a 192 168 1 1 route add default gw 192 168 1 1 sudo vim etc resolv conf 在 etc resolv conf 中加入 Generated by N
  • apache日志分析及系统cpu,内存,负载情况监控

    1 根据Apache Log xff0c 获取当天秒并发数最多的记录 tail 10000 demo fdipzone com access log 2014 01 16 01 cut d 34 34 f 2 awk 39 print 1
  • Apache 搭建HTTPS Virtual Host

    Apache 搭建HTTPS Virtual Host 1 创建SSL证书 首先需要安装openssl xff0c linux系统默认已安装 xff0c 如没有则用以下命令安装 xff1a sudo apt get install open
  • MongoDB 主从同步设置

    MongoDB 主从同步设置 关于MongoDB的安装及启动参数说明可以参考我之前转载的 Ubuntu安装MongoDB 与 Mongodb启动命令mongod参数说明 主从设置 Master xff1a 192 168 111 103 P
  • php Timer 页面运行时间监测类

    php Timer 页面运行时间监测类 xff0c 可按不同key监测不同的运行时间 Timer class php lt php Timer class 计算页面运行时间 可按不同key计算不同的运行时间 Date 2014 02 28
  • C 使用异或(xor)加密/解密文件

    C 使用异或 XOR 加密 解密文件 之前写过一篇 php 使用异或 xff08 XOR xff09 加密 解密文件 xff0c 但php执行的速度很慢 xff0c 因此这次使用C重写 xff0c 速度有很大的提高 xor encrypt
  • 使用C创建php扩展

    使用C创建php扩展 优点 xff1a 1 提高运行效率 2 降低php复杂度 xff0c 可以直接调用扩展方法实现功能 3 方便与第三方库交互 缺点 xff1a 1 开发比php复杂 2 可维护性降低 3 开发周期变长 php开发 xff
  • linux 系统监控命令

    linux系统监控有以下命令 xff1a uptime xff1a 显示系统负载情况 mpstat xff1a 显示 CPU 性能 free xff1a 显示内存使用情况 vmstat xff1a 显示虚拟内存使用情况 iostat xff
  • php 构造函数支持不同个数参数的方法

    php 构造函数支持不同个数参数方法 原理 xff1a 在 construct中使用 func num args 获取参数个数 xff0c 再根据参数个数执行不同的调用 参数值使用func get arg 方法获得 demo xff1a l
  • A+B for Polynomials(c++)

    题目描述 xff1a This time you are supposed to find A 43 B where A and B are two polynomials 输入描述 xff1a Each input file contai
  • php soap 使用实例

    SOAP 是基于XML和HTTP通讯协议 xff0c XML各个平台 xff0c 各种语言都支持的一种语言 WSDL 是网络服务描述语言 xff08 Web Services Description Language xff09 xff0c
  • 使用PDO查询mysql避免SQL注入

    使用传统的 mysql connect mysql query方法来连接查询数据库时 xff0c 如果过滤不严紧 xff0c 就有SQL注入风险 虽然可以用mysql real escape string 函数过滤用户提交的值 xff0c
  • linux crontab 实现每秒执行

    linux crontab 命令 xff0c 最小的执行时间是一分钟 如需要在小于一分钟内重复执行 xff0c 可以有两个方法实现 1 使用延时来实现每N秒执行 创建一个php做执行动作 xff0c 非常简单 xff0c 就是把当前时间写入
  • ssh远程执行命令并自动退出

    ssh命令格式如下 xff1a usage ssh 1246AaCfgKkMNnqsTtVvXxYy b bind address c cipher spec D bind address port e escape char F conf
  • shell 监控cpu,memory,load average

    shell 监控cpu xff0c memory xff0c load average xff0c 记录到log xff0c 当负载压力时 xff0c 发电邮通知管理员 原理 xff1a 1 获取cpu xff0c memory xff0c
  • shell date 命令说明

    shell date 命令说明 用法 xff1a date 选项 43 格式 或 xff1a date u utc universal MMDDhhmm CC YY ss 以给定的格式显示当前时间 xff0c 或是设置系统日期 d date
  • shell 生成指定范围随机数与随机字符串

    shell 生成指定范围随机数与随机字符串 1 使用系统的 RANDOM 变量 fdipzone 64 ubuntu echo RANDOM 17617 RANDOM 的范围是 0 32767 如需要生成超过32767的随机数 xff0c
  • php 双向队列类

    xff08 deque xff0c 全名double ended queue xff09 是一种具有队列和栈的性质的数据结构 双向队列中的元素可以从两端弹出 xff0c 其限定插入和删除操作在表的两端进行 在实际使用中 xff0c 还可以有
  • php heredoc 与 nowdoc

    php heredoc 与 nowdoc heredoc 结构 heredoc 句法结构 xff1a lt lt lt 在该运算符之后要提供一个标识符 xff0c 然后换行 接下来是字符串本身 xff0c 最后要用前面定义的标识符作为结束标
  • HTML5 localStorage and sessionStorage

    HTML5 提供两种web存储方法 xff0c localStorage 与 sessionStorage localStorage 与 sessionStorage 区别 localStorage没有过期时间 xff0c 只要不clear