html5本地存储的兼容性写法

来源:互联网 发布:怎么用u盘安装mac系统 编辑:程序博客网 时间:2024/06/05 17:03
html5的本地存储自打出来以后就博得众多前端的好感,因为这极大的摆脱了前端对后端的数据依赖,比如我们可以通过localStorage保存一些相对固有的数据,比如用户的操作习惯、简单的用户信息等等,这极大的方便了我们,但是作为html5的一部分,ie7、8是不支持的,但是有兼容癖的前端总想把ie7、8也兼容上,这样才好。很高兴地告诉你,这是完全可行的,我已经在自己的项目上运行超过半年了,非常稳定。好了我就直接贴一下代码吧。
someModule.factory("localStorage", function () {return {setItem: function (key, value) {var storage = this.storageHost;if (typeof localStorage == 'object') {storage.setItem(key, value);this.setItem = function (key, value) {storage.setItem(key, value);}} else {storage.setAttribute(key, value);storage.save('BKMAKER');this.setItem = function (key, value) {storage.setAttribute(key, value);storage.save('BKMAKER');}}},getItem: function (key) {var storage = this.storageHost;if (typeof localStorage == 'object') {this.getItem = function (key) {return storage.getItem(key);}return storage.getItem(key);} else {storage.load('BKMAKER');var value = storage.getAttribute(key);this.getItem = function (key) {storage.load('BKMAKER');return storage.getAttribute(key);}return value;}},removeItem: function (key) {var storage = this.storageHost;if (typeof localStorage == 'object') {storage.removeItem(key);this.removeItem = function (key) {storage.removeItem(key);}} else {storage.removeAttribute(key);storage.save("BKMAKER");this.removeItem = function (key) {storage.removeAttribute(key);storage.save("BKMAKER");}}},storageHost: window.localStorage || document.getElementById("dataStore")}});

什么?有点失望?呵呵,不好意思,我贴的是angular的代码,如果你不使用angular这个框架也完全没有关系,你只要摘除关键的几个函数即可,自己整理一下就能跑。那么你会奇怪的是为什么代码片段的底部会有document.getElementById("dataStore")这样一行代码,而这正是兼容IE的核心所在,所以如果你要兼容IE那么请你添加上这样一行html:<div id = "dataStore" style = "behavior:url(#default#userData)"></div> 这样就可以了。


0 0