JavaScript本地存储实践(html5的localStorage和ie的userData)
?
本地存储解决方案很多,比如Flash SharedObject、Google Gears、Cookie、DOM Storage、User Data、window.name、Silverlight、Open Database等。
借用网上的一张图来看下目前主流的本地存储方案:

主要说说localStorage和UserData:
要使用userData存储功能,必须先建立一个HTML标签,然后将behavior:url(‘#default#userData’)样式属性加上去,等于说userData是寄存于HTML标签的,当然不是所有标签都是可以的,仅限于部分标签。要了解更多的信息可以访问MSDN的《userData Behavior》?。
这里封装一些方法:
01var?UserData = {02????????userData :?null,03????????name : location.hostname,04????????//this.name = "css88.com";0506????????init:function(){07????????????if?(!UserData.userData) {08????????????????try?{09????????????????????UserData.userData = document.createElement('INPUT');10????????????????????UserData.userData.type =?"hidden";11????????????????????UserData.userData.style.display =?"none";12????????????????????UserData.userData.addBehavior ("#default#userData");13????????????????????document.body.appendChild(UserData.userData);14????????????????????var?expires =?new?Date();15????????????????????expires.setDate(expires.getDate()+365);16????????????????????UserData.userData.expires = expires.toUTCString();17????????????????}?catch(e) {18????????????????????return?false;19????????????????}20????????????}21????????????return?true;22????????},2324????????setItem :?function(key, value) {2526????????????if(UserData.init()){27????????????????UserData.userData.load(UserData.name);28????????????????UserData.userData.setAttribute(key, value);29????????????????UserData.userData.save(UserData.name);30????????????}31????????},3233????????getItem :?function(key) {34????????????if(UserData.init()){35????????????UserData.userData.load(UserData.name);36????????????return?UserData.userData.getAttribute(key)37????????????}38????????},3940????????remove :?function(key) {41????????????if(UserData.init()){42????????????UserData.userData.load(UserData.name);43????????????UserData.userData.removeAttribute(key);44????????????UserData.userData.save(UserData.name);45????????????}4647????????}48????};非常通俗易懂的接口:
留意localStorage存储的值都是字符串类型,在处理复杂的数据时,比如json数据时,需要借助JSON类,将json字符串转换成真正可用的json格式,localStorage第二个实战教程会重点演示相关功能。localStorage还提供了一个storage事件,在存储的值改变后触发。
目前浏览器都带有很好的开发者调试功能,下面分别是Chrome和Firefox的调试工具查看LocalStorage:

特别注意:localStorage在不同浏览器中的差异研究

这里写了一个简单的demo页面,使用 localStorage和userData 的例子,试着在demo页面的文本框中编辑内容,不要点击发布按钮,关闭或刷新(强制刷新Ctrl+F5)会保存你编辑好的内容,它会始终有效,除非您点击发布按钮删除掉存储的内容。整个过程中没有任何被数据发送到服务器。
demo页面:http://www.css88.com/demo/localstorage/