iLocalStorage.js 2.9 KB
/*
* 名称:本地存储函数
* 功能:兼容各大浏览器存储
* 作者:轩枫
* 日期:2015/06/11
* 版本:V2.0
* @example
iLocalStorage.setItem('key', 'value');
console.log(iLocalStorage.getItem('key'));
iLocalStorage.removeItem('key');
*/
(function (window, document) {
    // 1. IE7下的UserData对象
    var UserData = {
        userData: null,
        name: location.href,
        init: function () {
            if (!UserData.userData) {
                try {
                    UserData.userData = document.createElement("INPUT");
                    UserData.userData.type = "hidden";UserData.userData.style.display = "none";
                    UserData.userData.addBehavior("#default#userData"); document.body.appendChild(UserData.userData);
                    var expires = new Date();expires.setDate(expires.getDate() + 365);
                    UserData.userData.expires = expires.toUTCString();
                } catch (e) { return false; }
            }
            return true;
        },
        setItem: function (key, value) {
            if (UserData.init()) {
                UserData.userData.load(UserData.name); UserData.userData.setAttribute(key, value); UserData.userData.save(UserData.name);
            }
        },
        getItem: function (key) {
            if (UserData.init()) {
                UserData.userData.load(UserData.name); return UserData.userData.getAttribute(key);
            }
        },
        removeItem: function (key) {
            if (UserData.init()) {
                UserData.userData.load(UserData.name); UserData.userData.removeAttribute(key); UserData.userData.save(UserData.name);
            }
        }
    };

    // 2. 兼容只支持globalStorage的浏览器
    // 使用: var storage = getLocalStorage();
    function getLocalStorage() {
        if (typeof localStorage == "object") {
            return localStorage;
        } else if (typeof globalStorage == "object") {
            return globalStorage[location.href];
        } else if (typeof userData == "object") {
            return globalStorage[location.href];
        } else {
            throw new Error("不支持本地存储");
        }
    }
    var storage = getLocalStorage(); function iLocalStorage() { }
    // 高级浏览器的LocalStorage对象
    iLocalStorage.prototype = {
        setItem: function (key, value) {
            if (!window.localStorage) { UserData.setItem(key, value);  } else { storage.setItem(key, value); }
        },
        getItem: function (key) {
            if (!window.localStorage) { return UserData.getItem(key); } else { return storage.getItem(key); }
        },
        removeItem: function (key) {
            if (!window.localStorage) { UserData.removeItem(key); } else {storage.removeItem(key); }
        }
    }
    if (typeof module == 'object') { module.exports = new iLocalStorage();} else { window.iLocalStorage = new iLocalStorage(); }
})(window, document);