今天小編給大家分享一下HTML5本地存儲(chǔ)的方法的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
成都創(chuàng)新互聯(lián)是專(zhuān)業(yè)的方城網(wǎng)站建設(shè)公司,方城接單;提供網(wǎng)站制作、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行方城網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
HTML5 LocalStorage本地存儲(chǔ)
說(shuō)到本地存儲(chǔ),這玩意真是歷盡千辛萬(wàn)苦才走到HTML5這一步.
最初的Cookies自然是大家都知道,問(wèn)題主要就是太小,大概也就4KB的樣子,而且IE6只支持每個(gè)域名20個(gè)cookies ,太少了。優(yōu)勢(shì)就是大家都支持,而且支持得還蠻好。很早以前那些替換cookies的用戶也都慢慢的不存在了,就好像以前替換javascript的用戶不存在了一樣。
userData是IE的東西,垃圾。現(xiàn)在用的最多的是Flash吧,空間是Cookie的25倍,基本夠用。再之后Google推出了Gears ,雖然沒(méi)有限制,但不爽的地方就是要裝額外的插件(沒(méi)具體研究過(guò))。到了HTML5把這些都統(tǒng)一了,官方建議是每個(gè)網(wǎng)站5MB ,非常大了,就存些字符串,足夠了。比較奇怪異的是居然所有支持的瀏覽器目前都采用的5MB ,,盡管有一些瀏覽器可以讓用戶設(shè)置,但對(duì)于網(wǎng)頁(yè)制作者來(lái)說(shuō),目前的規(guī)模就5MB來(lái)考慮是比較妥當(dāng)?shù)摹?/p>
IE在8.0的時(shí)候就支持了,非常出人意料。不過(guò)需要注意的是,IE ,F(xiàn)irefox測(cè)試的時(shí)候需要把文件上傳到服務(wù)器上(或者localhost ),直接點(diǎn)開(kāi)本地的HTML文件,是不行的。
首先自然是檢測(cè)瀏覽器是否支持本地存儲(chǔ)。在HTML5中,本地存儲(chǔ)是一個(gè)窗口的屬性,包括localStorage和sessionStorage ,從名字應(yīng)該可以很容易的辨認(rèn)識(shí)別的區(qū)別,前者是一直存在本地的,只是伴隨著session ,窗口一旦關(guān)閉就沒(méi)了。多個(gè)適當(dāng)?shù)耐耆嗤?,這里以localStorage為例。
if(window.localStorage){
alert('此瀏覽器支持localStorage');
} else {
alert('此瀏覽器不支持localStorage');
}
存儲(chǔ)數(shù)據(jù)的方法就是直接給window.localStorage添加一個(gè)屬性,例如:window.localStorage.a 或者 window.localStorage [“ a”] 。它的讀取,寫(xiě)入,刪除操作方法很簡(jiǎn)單,以鍵值對(duì)的方式存在的,如下:
localStorage.a = 3; //設(shè)置a為“ 3”
localStorage [“ a”] =“ sfsf”; //設(shè)置a為“ sfsf” ,覆蓋上面的值
localStorage.setItem(“ b”,“ isaac”) ; //設(shè)置b為“ isaac”
var a1 = localStorage [“ a”]; //獲取a的值
var a2 = localStorage.a; //獲取a的值
var b = localStorage.getItem(“ b”); //獲取b的值
localStorage.removeItem(“ c”); //清除c的值
這里最推薦使用的自然是getItem()和setItem(),清除鍵值對(duì)使用removeItem()。如果希望一次性清除所有的鍵值對(duì),可以使用clear()。另外,HTML5還提供了一個(gè)鍵( )方法,可以在不知道有一些鍵值的時(shí)候使用,如下:
var storage = window.localStorage;
函數(shù)showStorage(){
for(var i = 0; i // key(i)獲得相應(yīng)的鍵,再用getItem()方法獲得對(duì)應(yīng)的值
document.write(storage.key(i)+“:” + storage.getItem(storage.key(i))+“
” );
}
}
寫(xiě)一個(gè)最簡(jiǎn)單的,利用本地存儲(chǔ)的計(jì)數(shù)器:
var storage = window.localStorage;
如果(!storage.getItem(“ pageLoadCount”))storage.setItem(“ pageLoadCount”,0);
storage.pageLoadCount = parseInt(storage.getItem(“ pageLoadCount”))+ 1; //必須格式轉(zhuǎn)換
document.getElementByIdx_x(“ count”)。innerHTML = storage.pageLoadCount;
showStorage();
不斷刷新能夠看到數(shù)字在一點(diǎn)點(diǎn)增長(zhǎng)
需要注意的是,HTML5本地存儲(chǔ)只能存儲(chǔ)二進(jìn)制,任何格式存儲(chǔ)的時(shí)候都會(huì)被自動(dòng)轉(zhuǎn)為串行,所以讀取的時(shí)候,需要自己進(jìn)行類(lèi)型的轉(zhuǎn)換。這也就是上一段代碼中parseInt必須要使用的原因。
另外,在iPhone / iPad的上有時(shí)設(shè)置setItem()時(shí)會(huì)出現(xiàn)詭異的QUOTA_EXCEEDED_ERR錯(cuò)誤,這時(shí)一般在setItem之前,先的removeItem()就確定了。
HTML5的本地存儲(chǔ),還提供了一個(gè)存儲(chǔ)事件,可以對(duì)鍵值對(duì)的改變進(jìn)行監(jiān)聽(tīng),使用方法如下:
if(window.addEventListener){
window.addEventListener(“ storage”,handle_storage,false);
}其他if(window.attachEvent){
window.attachEvent(“ onstorage”,handle_storage);
}
函數(shù)handle_storage(e){
if(!e){e = window.event;}
// showStorage();
}
對(duì)于事件變量e ,是一個(gè)StorageEvent對(duì)象,提供了一些實(shí)用的屬性,可以很好的觀察鍵值對(duì)的變化,如下表:
財(cái)產(chǎn)
類(lèi)型
描述
鑰匙
細(xì)繩
添加,刪除或修改的命名密鑰
舊值
任何
先前的值(現(xiàn)已覆蓋);如果添加了新項(xiàng)目,則為null
newValue
任何
新值;如果添加了項(xiàng)目,則為null
網(wǎng)址/ uri
細(xì)繩
調(diào)用觸發(fā)此更改的方法的頁(yè)面
這里添加兩個(gè)鍵值對(duì)a和b ,并增加一個(gè)按鈕。給a設(shè)置固定的值,當(dāng)點(diǎn)擊按鈕時(shí),修改b的值:
您已經(jīng)瀏覽過(guò)此頁(yè)面 0次。
測(cè)試發(fā)現(xiàn),目前瀏覽器對(duì)這個(gè)支持不太好,僅iPad和Firefox支持,而且Firefox支持得亂糟糟,e對(duì)象根本沒(méi)有那些屬性。iPad支持非常好,用的是e.uri (不是e.url ),臺(tái)式機(jī)上的Safari不行,詭異。
目前瀏覽器都具備很好的開(kāi)發(fā)者調(diào)試功能,下面分別是Chrome和Firefox的調(diào)試工具查看LocalStorage :
另外,目前的JavaScript使用非常多的json格式,如果希望存儲(chǔ)在本地,可以直接調(diào)用JSON.stringify()將其轉(zhuǎn)為編碼。讀取出來(lái)后調(diào)用JSON.parse()將字符串轉(zhuǎn)為json格式,如下所示:
var details = {作者:“ isaac”,“描述”:“ fresheggs”,“評(píng)分”:100};
storage.setItem(“ details”,JSON.stringify(details));
details = JSON.parse(storage.getItem(“ details”));
JSON對(duì)象在支持localStorage的瀏覽器上基本都支持,需要注意的是IE8 ,它支持JSON ,但如果添加了如下的兼容模式代碼,切到IE7模式就不行了(此時(shí)依然支持localStorage ,雖然顯示窗口.localStorage是[object] ,而不是之前的[object Storage] ,但測(cè)試發(fā)現(xiàn)getItem(),setItem()等均能使用)。
以上就是“HTML5本地存儲(chǔ)的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前名稱(chēng):HTML5本地存儲(chǔ)的方法
文章源于:http://aaarwkj.com/article46/jejdeg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、建站公司、定制網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
全網(wǎng)營(yíng)銷(xiāo)推廣知識(shí)