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 <
? 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);
近期评论