【HTML】WebStorage
WebStorage
2019-11-13 10:46:18 by冲冲
1. 概况
- 早期浏览器的本地存储使用cookie,当前推荐使用Web Storage。
- Web Storage的数据以"键/值对"存在,Web网页的数据只允许该网页访问使用。
2. 浏览器支持
- Internet Explorer 7 及更早IE版本不支持Storage。
- IE8+、FireFox、Opera、Chrome、Safari已经支持Storage。
- 使用storage之前,应该检查浏览器是否支持Storage。
1 if(typeof(Storage)!=="undefined")
2 {
3 // 支持localStorage和sessionStorage对象
4 // 业务代码.....
5 } else {
6 // 不支持web存储
7 }
3. Storage分类
- localStorage:用于长期保存该网站的数据,数据的存储时间没有限制,直到手动去除。
- sessionStorage:用于临时保存该网站的数据,在关闭窗口或标签页之后将会删除这些数据。
4. Storage作用域
作用域:隔离开不同页面之间的localStorage(例如:百度页面不能读到腾讯页面的localStorage)。
- localStorage作用域:相同的协议、相同的主机名、相同的端口。
- sessionStorage作用域:相同的协议、相同的主机名、相同的端口、相同窗口/浏览器标签页。
5. API
localStorage和sessionStorage使用的API相同,常用的有(以localStorage为例)
① 保存数据:localStorage.setItem(key,value);
② 读取数据:localStorage.getItem(key);
③ 删除单个数据:localStorage.removeItem(key);
④ 删除所有数据:localStorage.clear();
⑤ 得到某个索引的key:localStorage.key(index);
1 // 存储
2 localStorage.sitename = "菜鸟教程";
3 // 查找
4 document.getElementById("result").innerHTML = localStorage.sitename;
5 // 移除
6 localStorage.removeItem("sitename");
6. 数据类型
键/值对通常以字符串存储,可以按需要转换数据类型。
1 // 该实例展示用户点击按钮的次数,期望将代码中的字符串值转换为数字类型
2 if (localStorage.clickcount)
3 {
4 localStorage.clickcount=Number(localStorage.clickcount)+1;
5 }
6 else
7 {
8 localStorage.clickcount=1;
9 }
10 document.getElementById("result").innerHTML=" 你已经点击按钮 " + localStorage.clickcount + " 次 ";
7. sessionStorage
sessionStorage方法针对一个session进行数据存储。当用户关闭浏览器窗口后,数据会被删除。
1 if (sessionStorage.clickcount)
2 {
3 sessionStorage.clickcount=Number(sessionStorage.clickcount)+1;
4 }
5 else
6 {
7 sessionStorage.clickcount=1;
8 }
9 document.getElementById("result").innerHTML="在这个会话中你已经点击该按钮 " + sessionStorage.clickcount + " 次 ";
8. 应用实例
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title>HTML5本地存储之WebStorage</title>
6 </head>
7 <body>
8 <div style="border: 2px dashed #ccc;width:320px;text-align:left;">
9 <label for="keyname">别名(key):</label>
10 <input type="text" id="keyname" name="keyname" class="text"/>
11 <br/>
12 <label for="sitename">网站名:</label>
13 <input type="text" id="sitename" name="sitename" class="text"/>
14 <br/>
15 <label for="siteurl">网 址:</label>
16 <input type="text" id="siteurl" name="siteurl"/>
17 <br/>
18 <input type="button" onclick="save()" value="新增记录"/>
19 <hr/>
20 <label for="search_phone">输入别名(key):</label>
21 <input type="text" id="search_site" name="search_site"/>
22 <input type="button" onclick="find()" value="查找网站"/>
23 <p id="find_result"><br/></p>
24 </div>
25 <br/>
26 <div id="list">
27 </div>
28 <script>
29 //保存数据
30 function save(){
31 var site = new Object;
32 site.keyname = document.getElementById("keyname").value;
33 site.sitename = document.getElementById("sitename").value;
34 site.siteurl = document.getElementById("siteurl").value;
35 var str = JSON.stringify(site); // 将对象转换为字符串
36 localStorage.setItem(site.keyname,str);
37 alert("保存成功");
38 }
39 //查找数据
40 function find(){
41 var search_site = document.getElementById("search_site").value;
42 var str = localStorage.getItem(search_site);
43 var find_result = document.getElementById("find_result");
44 var site = JSON.parse(str);
45 find_result.innerHTML = search_site + "的网站名是:" + site.sitename + ",网址是:" + site.siteurl;
46 }
47
48 //将所有存储在localStorage中的对象提取出来,并展现到界面上
49 //确保存储的 keyname 对应的值为转换对象,否则JSON.parse会报错
50 function loadAll(){
51 var list = document.getElementById("list");
52 if(localStorage.length>0){
53 var result = "<table border='1'>";
54 result += "<tr><td>别名</td><td>网站名</td><td>网址</td></tr>";
55 for(var i=0;i<localStorage.length;i++){
56 var keyname = localStorage.key(i);
57 var str = localStorage.getItem(keyname);
58 var site = JSON.parse(str);
59 result += "<tr><td>"+site.keyname+"</td><td>"+site.sitename+"</td><td>"+site.siteurl+"</td></tr>";
60 }
61 result += "</table>";
62 list.innerHTML = result;
63 }else{
64 list.innerHTML = "数据为空...";
65 }
66 }
67 </script>
68 </body>
69 </html>
参考:https://www.runoob.com/html/html5-webstorage.html
【HTML】WebStorage的更多相关文章
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- 【原】谈谈对Objective-C中代理模式的误解
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【调侃】IOC前世今生
前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...
- Python高手之路【三】python基础之函数
基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...
- Python高手之路【一】初识python
Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...
- 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...
- 【原】FMDB源码阅读(二)
[原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...
随机推荐
- django3上线部署踩的坑
好久没有用过django写项目了,最近公司开发个官网,一时兴起就拿来练练手,这不用不知道,一用吓一跳啊. 才多久,版本都到3.0了. 踩坑一:运行项目时失败报错,后来查找资料发现, 当你使用djang ...
- 力扣 - 剑指 Offer 29. 顺时针打印矩阵
题目 剑指 Offer 29. 顺时针打印矩阵 思路1 其实就是按照理解题目的意思一步步从外层到内层打印出来,同时将一个外层分成四个部分分步打印 可以用一个变量count来维护当前打印的第几层 判断打 ...
- Golang通脉之包的管理
在工程化的开发项目中,Go语言的源码复用是建立在包(package)基础之上的. 包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言提供了很多内置包,如fmt.os.io等. ...
- 笨方法学python中执行argv提示ValueError: not enough values to unpack (expected 4, got 1)
解决方法:选择Terminal中输入执行ex13.py 1 2 3 执行结果如下图
- 什么是js事件,冒泡机制,事件捕获,默认行为
js事件: javascript使我们能够有能力创建动态页面,事件就是可以被js侦测到的行为,网页中每个元素都可以产生某些触发js函数的事件. 例如我们可以在用户点击某个按钮时产生一个click事件来 ...
- Java:并发笔记-08
Java:并发笔记-08 说明:这是看了 bilibili 上 黑马程序员 的课程 java并发编程 后做的笔记 7. 共享模型之工具-1 7.1 线程池 1. 自定义线程池 步骤1:自定义拒绝策略接 ...
- OO第四单元
OO第四单元总结 第四单元架构设计 第一次作业 uml类图 这次作业我采取的基本思路就是根据指令来建造一个简易的类图,用于查询,其中umlclass中包含了umlAttraibute,umlOpera ...
- BUAA软工-结对项目作业
结对项目作业 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 结对项目作业 我在这个课程的目标是 通过这门课锻炼软件开发能力和经验,强化与他人合作 ...
- BUAA 2020 软件工程 个人博客作业
BUAA 2020 软件工程 个人博客作业 Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 ...
- bash执行顺序:alias --> function --> builtin --> program
linux bash的执行顺序如下所示: 先 alias --> function --> builtin --> program 后 验证过程: 1,在bash shell中有内置 ...