localstorage || globalStorage || userData
globalStorage?
這個也是html5中提出來,在瀏覽器關閉以后,使用globalStorage存儲的信息仍能夠保留下來,并且存儲容量比IE的userdata大得多,一個域下面是5120k。和sessionStorage一樣,域中任何一個頁面存儲的信息都能被所有的頁面共享。?
作用域?
globalStorage[''] 所有下面的頁面都可以使用這塊空間?
globalStorage[''] 所有下面的頁面都可以使用這塊空間?
globalStorage['com']:所有com域名都可以 共享的使用這一塊空間?
globalStorage[''] :所有頁面都可以使用的空間?
現在Firefox只支持當前域下的globalStorage存儲, 如果使用公用域會導致一個這樣一個類似的錯誤“Security error” code: “1000”。?
過期時間?
按照HTML5的描述,globalStorage只在安全問題或者當用戶要求時才會過期,瀏覽器應該避免刪除那些正在被腳本訪問的數據,并且userdata應該是用戶可寫的。?
因此我們的腳本要能夠控制過期時間,可以在globalStorage的某個區域存儲過期時間,在load的時候判斷是否過期,可以在一定程度上解決過期時間的問題。?
存儲時,同時存儲過期時間?
以上是我從網上查詢到的資料,為了兼容非IE瀏覽器“userdata”,我改進了之前我自己寫的一個
“userdata”(見 UserData使用總結) ,現在是兼容IE和支持globalStorage的瀏覽器了。
復制代碼 代碼如下:
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,還望指出。謝謝
轉載于:https://www.cnblogs.com/jiechn/p/4080503.html
總結
以上是生活随笔為你收集整理的localstorage || globalStorage || userData的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS 8隐藏大招:可设置空白页主屏
- 下一篇: iOS8连上WiFi太慢!?两步设置立即