我们可以 在客户的 浏览器上存储一些东西,比如浏览网站的时间,网页上写的未提交的东西,用户的设置,ID,密码,等等,这些通过 Cookies是完胜不了的,在我们的应用里面,可以利用这些存储的内容,这就是 HTML5 的 Web Storage 。
HTML5 提供了两种在客户端存储数据的新方法也就是Web Storage 分成两个部分:
- ■ Local Storage (本地储存空间)没有时间限制的数据存储;
- ■ 还有 Session Storage(连线时段储存空间)针对一个 session 的数据存储
之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。
在 HTML5 中,数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使在不影响网站性能的情况下存储大量数据成为可能。
对于不同的网站,数据存储于不同的区域,并且一个网站只能访问其自身的数据。
HTML5 使用 JavaScript 来存储和访问数据。
Web Storage 是个很有用的功能,通过 JavaScript ,你可以把内容存储到用户的浏览器上。比如用户通过你的应用写文章,你可以实时的把用户写的内容记录到 Local Storage 里面,这样在出现网络故障的时候,你可以把用户写的内容恢复出来。
local Storage 方法
localStorage 方法存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
如何创建和访问 localStorage:
<script type="text/javascript">
localStorage.lastname="Smith";
document.write(localStorage.lastname);
</script>
运行结果:
Last name: Smith
下面的例子对用户访问页面的次数进行计数:
<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>
只要刷新网页,浏览次数就会不停的计数。
在线预览:http://runjs.cn/detail/0trvxslc
session Storage 方法
session Storage 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。不是一种持久化的本地存储,仅仅是会话级别的存储。
如何创建并访问一个 sessionStorage:
<script type="text/javascript">
sessionStorage.lastname="Smith";
document.write(sessionStorage.lastname);
</script>
运行结果
Smith
下面的例子对用户在当前 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>
浏览器支持
浏览器的支持除了IE7及以下不支持外,其他标准浏览器都完全支持(ie及FF需在web服务器里运行),值得一提的是IE总是办好事,例如IE7、IE6中的UserData其实就是javascript本地存储的解决方案。通过简单的代码封装可以统一到所有的浏览器都支持web storage。
要判断浏览器是否支持local Storage可以使用下面的代码:
if(window.localStorage){ alert("浏览支持local Storage")}else{ alert("浏览暂不支持local Storage")}//或者
if(typeof window.localStorage == 'undefined'){ alert("浏览暂不支持localStorage")}
local Storage和session Storage操作
local Storage和sessionS torage都具有相同的操作方法,例如 setItem、getItem 和 removeItem 等
local Storage和session Storage的方法:
setItem存储value
用途: 将 value 存储到key字段
用法: .setItem( key, value)
sessionStorage.setItem("key", "value");
localStorage.setItem("site", "js8.in");
getItem获取value
用途:获取指定key本地存储的值
用法:.getItem(key)
var value = sessionStorage.getItem("key");
var site = localStorage.getItem("site");
removeItem删除key
用途:删除指定key本地存储的值
用法:.removeItem(key)
sessionStorage.removeItem("key");
localStorage.removeItem("site");
clear清除所有的key/value
用途:清除所有的key/value
用法:.clear()
sessionStorage.clear();
localStorage.clear();