以前客户端存储数据都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。
HTML5 提供了两种在客户端存储数据的新方法:localStorage& sessionStorage
localStorage - 没有时间限制的数据存储
localStorage 方法存储的数据没有时间限制。
基本用法
存值 localStorage.setItem(key,value) [如果key的value存在时,更新key的值]
1
2localStorage.name = "123";
localStorage["name"] = "123";
取值 localStorage.getItem(key,value) [如果key的value不存在时,返回null]
1
2var name = localStorage.name;
var name = localStorage["name"];
- 删除 localStorage.remove(key) [清除单项key的值]
- 清除 localStorage.clear() [表示清除localStorage存储的所有数据]
补充
当需要存储的数据很多时,可以将数据存储到数组中并转换成JSON格式的数据。
- JSON.stringify(data) 将对象转换成JSON格式的数据串。
- JSON.parse(data)将数据解析成对象并返回解析后的对象。
1 | var arr = {"name":"moomoo","age":2,"eat":"apple"}; |
说明
localStorage存储的数据是不能跨浏览器共用的,也就是说存储在浏览器的数据只能在这个浏览器中访问,现在各个浏览器的存储空间是5M。
sessionStorage - 针对一个 session 的数据存储
sessionStorage是个全局对象,它维护着在页面会话(page session)期间有效的存储空间。只要浏览器开着,页面会话周期就会一直持续。当页面重新载入(reload)或者被恢复(restores)时,页面会话也是一直存在的。每在新标签或者新窗口中打开一个新页面,都会初始化一个新的会话,也就是说sessionStorage针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。
当浏览器被意外刷新的时候,一些临时数据应当被保存和恢复。sessionStorage 对象在处理这种情况的时候是最有用的。sessionStorage自动保存一个文本域中的内容,如果浏览器被意外刷新,则恢复该文本域中的内容,所以不会丢失任何输入的数据。
基本用法
sessionStorage 方法与localStorage的方法相似
兼容性
并不是所有的浏览器都支持。如果你想在没有原生支持localStorage对象的浏览器中使用它,可以在你编写的 JavaScript代码的首部插入下面两段代码中的任意一段。
1 | if (!window.localStorage) { |
或者
1 | if (!window.localStorage) { |