好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

HTML5 Web 存储

在客户端存储数据

html5 提供了两种在客户端存储数据的新 方法 :

localStorage - 没有时间限制的数据存储
sessionStorage - 针对 一个 session 的数据存储

之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。

在 html5 中,数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使在不影响网站 性能 的情况下存储大量数据成为可能。

对于不同的网站,数据存储于不同的区域,并且 一个 网站只能访问其自身的数据。

HTML5 使用 JavaScript 来存储和访问数据。

什么是 HTML5 Web 存储 ?

我们可以使用 HTML5 在用于的浏览器上存储 用户 的浏览数据

在 HTML5 之前,本地存储使用的是 Cookie

但是 Web 存储需要更加的安全与 快速 . 这些数据不会被保存在服务器上,但是这些数据只用于 用户 请求 网站数据 上

它也可以存储大量的数据,而不影响网站的 性能

数据以?键/值?对存在,web 网页的数据只允许该网页访问使用

localStorage 方法

localStorage 方法 存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。

如何创建和访问 localStorage:

实例
<script?type="text/JavaScript">
localStorage.lastname="Smith";
document.write(localStorage.lastname);
</script>

下面的例子对 用户 访问 页面 的 次数 进行计数:

实例
<script?type="text/javascript">
if?(localStorage.pagecount)
??{
??localStorage.pagecount=Number(localStorage.pagecount)?+1;
??}
else
??{
??localStorage.pagecount=1;
??}
document.write("Visits?"+?localStorage.pagecount?+?"?time(s).");
</script>

常用的有如下几个

说明 localStorage sessionStorage 保存数据 localStorage.setItem(key,value) sessionStorage.setItem(key,value) 读取数据 localStorage.getItem(key) sessionStorage.getItem(key) 删除 单个数据 localStorage.removeItem(key) sessionStorage.removeItem(key) 删除 所有数据 localStorage.clear() sessionStorage.clear() 得到某个索引的 key localStorage.key(index) sessionStorage.key(index)
提示 :?键/值对通常以字符串存储,当然了,我们可以按自己的需要转换该格式

sessionStorage 方法

sessionStorage 方法 针对 一个 session 进行数据存储。当 用户 关闭 浏览器窗口后,数据会被 删除 。

如何创建并访问 一个 sessionStorage:

实例
<script?type="text/javascript">
sessionStorage.lastname="Smith";
document.write(sessionStorage.lastname);
</script>

下面的例子对 用户 在当前 session 中访问 页面 的 次数 进行计数:

实例
<script?type="text/javascript">
if?(sessionStorage.pagecount)
??{
??sessionStorage.pagecount=Number(sessionStorage.pagecount)?+1;
??}
else
??{
??sessionStorage.pagecount=1;
??}
document.write("Visits?"+sessionStorage.pagecount+"?time(s)?this?session.");
</script>

Web Storage 开发 一个 简单的网站列表程序

接下来我们使用 Web Storage 来开发 一个 简单的网站列表程序,它包含以下 功能

可以输入网站名,网址,以网站名作为 key 存入 localStorage

根据网站名,查找网址;

列出当前已保存的所有网站

下面的 代码 用于保存数据

//保存数据??
function?save(){??var?siteurl?=?document.getElementById("siteurl").value;??var?sitename?=?document.getElementById("sitename").value;??
????localStorage.setItem(sitename,siteurl);
????alert(" 添加 成功");
}

下面的 代码 用于查找数据

//查找数据??
function?find(){??
????var?search_site?=?document.getElementById("search_site").value;??
????var?sitename?=?localStorage.getItem(search_site);??
????var?find_result?=?document.getElementById("find_result");??
????find_result.innerHTML?=?search_site?+?"的网址是:"?+?sitename;??
}

完整的 代码 如下

<div?style="border:?2px?dashed?#ccc;width:320px;text-align:center;">?????
????<label?for="sitename">网站名(key):</label>??
????<input?type="text"?id="sitename"?name="sitename"?class="text"/>??
????<br/>??
????<label?for="siteurl">网?址(value):</label>??
????<input?type="text"?id="siteurl"?name="siteurl"/>??
????<br/>??
????<input?type="button"?onclick="save()"?value="新增记录"/>??
????<hr/>??
????<label?for="search_site">输入网站名:</label>??
????<input?type="text"?id="search_site"?name="search_site"/>??
????<input?type="button"?onclick="find()"?value="查找网站"/>??
????<p?id="find_result"><br/></p>??
</div>

这个范例知识简单的演示了下 localStorage 存储与查找,更多情况下我们存储的数据会更复杂

接下来我们使用 jsON.stringify 来存储对象数据
jsON.stringify 可以将对象转换为字符串

var?site?=?new?Object;
...
var?str?=?JSON.stringify(site);?//?将对象转换为字符串

然后再使用 JSON.parse 方法 将 字符串转换 为 JSON 对象

var?site?=?JSON.parse(str);

save() 方法
//保存数据??
function?save(){??
????var?site?=?new?Object;
????site.keyname?=?document.getElementById("keyname").value;
????site.sitename?=?document.getElementById("sitename").value;??
????site.siteurl?=?document.getElementById("siteurl").value;
????var?str?=?JSON.stringify(site);?//?将对象转换为字符串
????localStorage.setItem(site.keyname,str);??
????alert("保存成功");
}

find() 方法
//查找数据??
function?find(){??
????var?search_site?=?document.getElementById("search_site").value;??
????var?str?=?localStorage.getItem(search_site);??
????var?find_result?=?document.getElementById("find_result");
????var?site?=?JSON.parse(str);??
????find_result.innerHTML?=?search_site?+?"的网站名是:"?+?site.sitename?+?",网址是:"?+?site.siteurl;??
}

完整的 代码 如下

<div?style="border:?2px?dashed?#ccc;width:320px;text-align:center;">
????<label?for="keyname">别名(key):</label>??
????<input?type="text"?id="keyname"?name="keyname"?class="text"/>??
????<br/>??
????<label?for="sitename">网站名:</label>??
????<input?type="text"?id="sitename"?name="sitename"?class="text"/>??
????<br/>??
????<label?for="siteurl">网?址:</label>??
????<input?type="text"?id="siteurl"?name="siteurl"/>??
????<br/>??
????<input?type="button"?onclick="save()"?value="新增记录"/>??
????<hr/>??
????<label?for="search_site">输入别名(key):</label>??
????<input?type="text"?id="search_site"?name="search_site"/>??
????<input?type="button"?onclick="find()"?value="查找网站"/>??
????<p?id="find_result"><br/></p>??
</div>

范例中的 loadAll 输出 了所有存储的数据,我们需要确保 localStorage 存储的数据都为 JSON 格式,否则 JSON.parse(str) 将会报错。

HTML5 Web SQL 数据库 ? ?HTML5 语义元素

查看更多关于HTML5 Web 存储的详细内容...

  阅读:47次

上一篇

下一篇

第1节:HTML5 教程    第2节:HTML5 浏览器支持    第3节:HTML5 新元素    第4节:HTML5 Video 视频    第5节:HTML 5 Video + DOM    第6节:HTML5 内联 SVG    第7节:HTML5 新的 Input 类型    第8节:HTML5 MathML 数学公式    第9节:HTML5 Geolocation 地理定位    第10节:HTML5 Canvas画布    第11节:HTML5 拖放 ( drag 和 drop )    第12节:HTML5 Audio 音频    第13节:HTML5 Web Workers    第14节:HTML5 表单元素    第15节:HTML5 表单属性    第16节:HTML5 语义元素    第17节:HTML5 Web 存储    第18节:HTML5 Web SQL 数据库    第19节:HTML5 应用程序缓存    第20节:HTML 5 服务器发送事件    第21节:HTML5 WebSocket    第22节:HTML5 历史记录API    第23节:HTML 5 代码规范    第24节:HTML5 Canvas 描边和填充    第25节:HTML5 Canvas 绘制矩形    第26节:HTML5 Canvas 清除画布    第27节:HTML5 Canvas 渐变    第28节:HTML5 Canvas 合成    第29节:HTML5 Canvas 绘制图像    第30节:HTML5 Canvas 绘制文本    第31节:HTML5 Canvas 阴影    第32节:HTML5 Canvas 路径    第33节:HTML5 Canvas 转换    第34节:HTML5 Canvas 状态    第35节:HTML5 Canvas toDataURL()    第36节:HTML5 Canvas 像素处理    第37节:HTML5 Canvas 制作动画