IE 之 userData 模拟 localStorage

chrome,  safari, firefox, ie 9都支持 localStorage.  但可恶的是,中国 ie 6 占有最大的比例。 使用 cookie 不但容量有限,而且给我们增加了不少的带宽,也进行影响网站的性能。

所以我写了 localStorage.js 来模拟 localStorage, 这样其它js 就跨浏览器地使用localStorage了.

代码

if(!window.localStorage && /MSIE/.test(navigator.userAgent)){
    if(!window.UserData) {
        window.UserData = function(file_name) {
            if(!file_name) file_name="user_data_default";
            var dom = document.createElement('input');
            dom.type = "hidden";
            dom.addBehavior ("#default#userData");
            document.body.appendChild(dom);
            dom.save(file_name);
            this.file_name = file_name;
            this.dom = dom;
            return this;
        };

        window.UserData.prototype = {
            setItem:function(k, v)
            {
                this.dom.setAttribute(k,v);
                this.dom.save(this.file_name);
            },
            getItem:function(k){
                this.dom.load(this.file_name);
                return this.dom.getAttribute(k);
            },
            removeItem:function(k){
                this.dom.removeAttribute(k);
                this.dom.save(this.file_name);
            },

            clear:function() {
               this.dom.load(this.file_name);
               var now = new Date();
               now = new Date(now.getTime()-1);
               this.dom.expires = now.toUTCString();
               this.dom.save(this->file_name);
            }
        };
    }
    window.localStorage= new window.UserData("local_storage");
}

 

缺陷

       userdata有个缺陷是不支持跨目录存储。

       这个实现要求 使用 localStorage的时候,只使用 setItem, getItem, removeItem接口, 而不能直接使用 localStorage.your_key 的方式。

posted @ 2011-03-17 14:37  napoleon_liu  阅读(1767)  评论(0编辑  收藏  举报