HTML5 LocalStorage 本地存储:javascript
最先的Cookies天然是你们都知道,问题主要就是过小,大概也就4KB的样子,并且IE6只支持每一个域名20个cookies,太少了。优点就是你们都支持,并且支持得还蛮好。很早之前那些禁用cookies的用户也都慢慢的不存在了,就好像之前禁用javascript的用户不存在了同样。java
userData是IE的东西,垃圾。如今用的最多的是Flash吧,空间是Cookie的25倍,基本够用。再以后Google推出了Gears,虽然没有限制,但不爽的地方就是要装额外的插件(没具体研究过)。到了HTML5把这些都统一了,官方建议是每一个网站5MB,很是大了,就存些字符串,足够了。比较诡异的是竟然全部支持的浏览器目前都采用的5MB,尽管有一些浏览器可让用户设置,但对于网页制做者来讲,目前的形势就5MB来考虑是比较稳当的。json
首先天然是检测浏览器是否支持本地存储。在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,从名字应该能够很清楚的辨认两者的区别,前者是一直存在本地的,后者只是伴随着session,窗口一旦关闭就没了。两者用法彻底相同。浏览器
存储数据的方法就是直接给window.localStorage添加一个属性,例如:window.localStorage.a 或者 window.localStorage["a"]。它的读取、写、删除操做方法很简单,是以键值对的方式存在的,以下:cookie
localStorage.a = 3;//设置a为"3"
localStorage["a"] = "sfsf";//设置a为"sfsf",覆盖上面的值
localStorage.setItem("b","isaac");//设置b为"isaac"
var a1 = localStorage["a"];//获取a的值
var a2 = localStorage.a;//获取a的值
var b = localStorage.getItem("b");//获取b的值
localStorage.removeItem("c");//清除c的值session
这里最推荐使用的天然是getItem()和setItem(),清除键值对使用removeItem()。若是但愿一次性清除全部的键值对,可使用clear()。网站
须要注意的是,HTML5本地存储只能存字符串,任何格式存储的时候都会被自动转为字符串,因此读取的时候,须要本身进行类型的转换。这也就是上一段代码中parseInt必需要使用的缘由。spa
目前javascript使用很是多的json格式,若是但愿存储在本地,能够直接调用JSON.stringify()将其转为字符串。读取出来后调用JSON.parse()将字符串转为json格式,以下所示:插件
var details = {author:"isaac","description":"fresheggs","rating":100};
storage.setItem("details",JSON.stringify(details));
details = JSON.parse(storage.getItem("details"));对象
JSON对象在支持localStorage的浏览器上基本都支持。