js本地存儲(chǔ)解決方案——localStorage與userData
WEB應(yīng)用的快速發(fā)展,是的本地存儲(chǔ)一些數(shù)據(jù)也成為一種重要的需求,實(shí)現(xiàn)的方案也有很多,最普通的就是cookie了,大家也經(jīng)常都用,但是cookie的缺點(diǎn)是顯而易見的,其他的方案比如:IE6以上的userData,F(xiàn)irefox下面的globalStorage,以及Flash的本地存儲(chǔ),除了Flash之外,其他的幾個(gè)都有一些兼容性的問題。
sessionStorage與localStorageWeb Storage實(shí)際上由兩部分組成:sessionStorage與localStorage。
sessionStorage用于本地存儲(chǔ)一個(gè)會(huì)話(session)中的數(shù)據(jù),這些數(shù)據(jù)只有在同一個(gè)會(huì)話中的頁面才能訪問并且當(dāng)會(huì)話結(jié)束后數(shù)據(jù)也隨之銷毀。因此sessionStorage不是一種持久化的本地存儲(chǔ),僅僅是會(huì)話級(jí)別的存儲(chǔ)。
localStorage用于持久化的本地存儲(chǔ),除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會(huì)過期的。
userData語法:
XML <Prefix: CustomTag ID=sID />HTML <ELEMENT ID=sID>Scripting object .style.behavior = 'url(’#default#userData’)'object.addBehavior ('#default#userData')
屬性:
expires 設(shè)置或者獲取 userData behavior 保存數(shù)據(jù)的失效日期。XMLDocument 獲取 XML 的引用。方法:
getAttribute() 獲取指定的屬性值。load(object) 從 userData 存儲(chǔ)區(qū)載入存儲(chǔ)的對(duì)象數(shù)據(jù)。removeAttribute() 移除對(duì)象的指定屬性。save(object) 將對(duì)象數(shù)據(jù)存儲(chǔ)到一個(gè) userData 存儲(chǔ)區(qū)。setAttribute() 設(shè)置指定的屬性值。localStorage方法:
localStorage.getItem(key):獲取指定key本地存儲(chǔ)的值localStorage.setItem(key,value):將value存儲(chǔ)到key字段localStorage.removeItem(key):刪除指定key本地存儲(chǔ)的值封裝localData = { hname:location.hostname?location.hostname:’localStatus’, isLocalStorage:window.localStorage?true:false, dataDom:null, initDom:function(){ //初始化userDataif(!this.dataDom){ try{this.dataDom = document.createElement(’input’);//這里使用hidden的input元素this.dataDom.type = ’hidden’;this.dataDom.style.display = 'none';this.dataDom.addBehavior(’#default#userData’);//這是userData的語法document.body.appendChild(this.dataDom);var exDate = new Date();exDate = exDate.getDate()+30;this.dataDom.expires = exDate.toUTCString();//設(shè)定過期時(shí)間 }catch(ex){return false; }}return true; }, set:function(key,value){if(this.isLocalStorage){ window.localStorage.setItem(key,value);}else{ if(this.initDom()){this.dataDom.load(this.hname);this.dataDom.setAttribute(key,value);this.dataDom.save(this.hname) }} }, get:function(key){if(this.isLocalStorage){ return window.localStorage.getItem(key);}else{ if(this.initDom()){this.dataDom.load(this.hname);return this.dataDom.getAttribute(key); }} }, remove:function(key){if(this.isLocalStorage){ localStorage.removeItem(key);}else{ if(this.initDom()){this.dataDom.load(this.hname);this.dataDom.removeAttribute(key);this.dataDom.save(this.hname) }} }}
相關(guān)文章:
1. php5.6不能擴(kuò)展redis.so的解決方法2. python 爬取嗶哩嗶哩up主信息和投稿視頻3. js實(shí)現(xiàn)貪吃蛇小游戲(加墻)4. 使用idea 去除 html 代碼前的行號(hào)和空行的方法詳解5. SpringBoot 開發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI6. js實(shí)現(xiàn)跳一跳小游戲7. PHP設(shè)計(jì)模式(四)原型模式Prototype實(shí)例詳解【創(chuàng)建型】8. JVM之class文件結(jié)構(gòu)9. 10個(gè)提供免費(fèi)PHP腳本下載的網(wǎng)站10. Python編寫nmap掃描工具
