Tag Archive for 'ie7'

对IE6|7浏览器提供localStorage支持

localStorge是IE8以上版本和其他高级浏览器才具有的功能,本文通过在Window环境下对UserData进行封装,对IE6和IE7浏览器提供了与其他浏览器localStorage原生API兼容的方法,包括:setItem、getItem、removeItem以及clear。(tips:请在原生IE中测试,在IEtester中会引起IEtester崩溃)

源码:

/**
 * 对IE6|7浏览器提供localStorage支持
 * fanyu.xhy@tmall.com 2012-2-20
 */
;(function(){
    var S = KISSY, DOM = S.DOM,
        isIE67 = (S.UA.ie < 8) ? true: false,
        _userDataEl,
        _saveFileName,
        _expires;
    if(isIE67 && !window['localStorage']){
        var IELocalStorage = function(config){

            var _config = S.mix({
                'saveFileName': 'IELocalStorage',
                'expires': 365
            }, config);

            _saveFileName = _config.saveFileName;
            var _expires = new Date();

            _expires.setDate(_expires.getDate() + _config.expires);

            try{
                var _userDataEl = document.createElement('input');
                _userDataEl.type = 'hidden';
                _userDataEl.addBehavior('#default#userData');
                document.body.appendChild(_userDataEl);
                _userDataEl.expires = _expires.toUTCString();
            }catch(e){
                return false;
            }

            return {
                'setItem': function(key, value){
                    _userDataEl.load(_saveFileName);
                    _userDataEl.setAttribute(key, value);
                    _userDataEl.save(_saveFileName);
                },
                'getItem': function(key){
                    _userDataEl.load(_saveFileName);
                    return _userDataEl.getAttribute(key);
                },
                'removeItem': function(key){
                    _userDataEl.load(_saveFileName);
                    _userDataEl.removeAttribute(key);
                    _userDataEl.save(_saveFileName);
                },
                'clear': function(){
                    _userDataEl.load(_saveFileName);
                    var d = new Date();
                    d.setDate(d.getDate() - 1);
                    _userDataEl.expires = d.toUTCString();
                    _userDataEl.save(_saveFileName);
                }
            }

        }
        window['localStorage'] = IELocalStorage();
    }
})(KISSY);