源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

javascript globalStorage类代码

  • 时间:2021-05-19 06:52 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:javascript globalStorage类代码
[b]globalStorage [/b] 这个也是html5中提出来,在浏览器关闭以后,使用globalStorage存储的信息仍能够保留下来,并且存储容量比IE的userdata大得多,一个域下面是5120k。和sessionStorage一样,域中任何一个页面存储的信息都能被所有的页面共享。 作用域 globalStorage['z.baidu.com'] 所有z.baidu.com下面的页面都可以使用这块空间 globalStorage['baidu.com'] 所有baidu.com下面的页面都可以使用这块空间 globalStorage['com']:所有com域名都可以 共享的使用这一块空间 globalStorage[''] :所有页面都可以使用的空间 现在Firefox只支持当前域下的globalStorage存储, 如果使用公用域会导致一个这样一个类似的错误“Security error” code: “1000”。 过期时间 按照HTML5的描述,globalStorage只在安全问题或者当用户要求时才会过期,浏览器应该避免删除那些正在被脚本访问的数据,并且userdata应该是用户可写的。 因此我们的脚本要能够控制过期时间,可以在globalStorage的某个区域存储过期时间,在load的时候判断是否过期,可以在一定程度上解决过期时间的问题。 存储时,同时存储过期时间 以上是我从网上查询到的资料,为了兼容非IE浏览器“userdata”,我改进了之前我自己写的一个 “userdata”(见 UserData使用总结) ,现在是兼容IE和支持globalStorage的浏览器了。
[u]复制代码[/u] 代码如下:
function behaviorUserdata(udObj) {     var me = this;     if(CMInfo.Bs_Name=='IE')    //IE下用userdata实现客户端存储     {         var loaded = '';    //当前已载入的文件名         this.udObj = getObject(udObj);         this.udObj.style.behavior = 'url(#default#userdata)';         this.value = this.udObj.value;         this.inhtml = this.udObj.innerHTML;         //检查文件是否存在,存在est=undefined并返回true否则返回false         this.exist = function(filename){             try{                 me.udObj.load(filename);//将文件名为 filename的 XML 载入                 me.loaded = filename;                 return true;             }catch(e){ return false;}         }         //预加载         this.preLoad = function(filename){             if(me.loaded=='' || me.loaded!=filename){me.exist(filename);}             return me.loaded;         }         //获取指定的属性值         this.getAtrib = function(filename,atrib){             if(me.preLoad(filename)!='')             {                 var val = me.udObj.getAttribute(atrib);                 return val==null?"":val;             }return "";         }         //移除对象的指定属性         this.remAtrib = function(filename,atrib){             me.udObj.removeAttribute(atrib);             me.udObj.save(filename);    //将对象数据保存到名为filename的XML文件里面             return true;         }         //设置指定的属性值         this.setAtrib = function(filename,atrib,val,expire){             var etime = typeof(expire)=="undefined"?24*60*60:expire;             me.udObj.expires = me.setExpire(etime);             me.udObj.setAttribute(atrib,val);             me.udObj.save(filename);         }         //设置一个系列的对象数据(即整个XML文件)失效         this.remPartion = function(filename){             if(me.exist(filename))             {                 me.udObj.expires = me.setExpire(-1);                 me.udObj.save(filename);             }         }         //设置有效期         this.setExpire = function(sec){             var oTimeNow = new Date();             oTimeNow.setSeconds(oTimeNow.getSeconds() + parseInt(sec));             return oTimeNow.toUTCString();         }     }else    //非IE下用globalStorage实现客户端存储     {         var domain = document.domain;         //获取指定的属性值         this.getAtrib = function(filename,atrib){             var oTimeNow = new Date();             var etime = parseInt(window.globalStorage[domain][filename + "__expire"]);             if(!etime || etime < parseInt(oTimeNow.getTime()))             {                 me.remPartion(filename);                 return '';             }             return window.globalStorage[domain][filename + "__" + atrib];         }         //移除对象的指定属性         this.remAtrib = function(filename,atrib){             try{window.globalStorage.removeItem(filename + "__" + atrib);}catch(e){}//删除             return true;         }         //设置指定的属性值         this.setAtrib = function(filename,atrib,val,expire){             var etime = typeof(expire)=="undefined"?24*60*60:expire;             window.globalStorage[domain][filename + "__expire"] = me.setExpire(etime);             window.globalStorage[domain][filename + "__" + atrib] = val;         }         //设置一个系列的对象数据失效         this.remPartion = function(filename){             me.remAtrib(filename,"expire");             return true;         }         //设置有效期         this.setExpire = function(sec){             var oTimeNow = new Date();             oTimeNow.setSeconds(oTimeNow.getSeconds() + parseInt(sec));             return oTimeNow.getTime();         }         } }
其中CMInfo类见 一些常用的JS功能函数(一) (2009-06-04更新) 需要说明的是因为还没用到实际项目中,因此还不知其兼容性和稳定性如何,如果网友发现了BUG,还望指出。谢谢
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部