RELATEED CONSULTING
相關咨詢
選擇下列産品馬上(shàng)在線溝通(tōng)
服務時(shí)間(jiān):9:00-18:00
你(nǐ)可(kě)能遇到了下面的問題
關閉右側工具欄
HTML5本地存儲
  • 作(zuò)者:admin
  • 發表時(shí)間(jiān):2013-07-02 14:16:54
  • 來(lái)源:未知

HTML5帶給我們的不僅僅是更多(duō)語義豐富的标簽,還(hái)有(yǒu)更多(duō)新特性,比如本地存儲。要在客戶端保存用戶一些(xiē)數(shù)據,我們首選使用cookie,但(dàn)是cookie最多(duō)隻能存儲4kb,而HTML5的本地存儲localStorage可(kě)以存儲5M的數(shù)據,這将對WEB開(kāi)發以及移動終端應用帶來(lái)革命性的轉變。


目前主流浏覽器(qì)都支持localStorage本地存儲,而微軟從IE8就出人(rén)意料的開(kāi)始支持localStorage。本文将和(hé)您一起分享HTML5本地存儲localStorage相關知識,通(tōng)過實例熟悉本地存儲的在WEB開(kāi)發中的應用。

如何使用localStorage?

localStorage的使用非常簡單,提供了設置、獲取和(hé)删除等方法。如:

//設置存儲客戶端的鍵值bar的值為(wèi)123
localStorage.setItem("bar", "123");
//獲取客戶端存儲的鍵值bar的值
var foo = localStorage.getItem("bar");
//删除鍵值
localStorage.removeItem("bar");

示例1.計(jì)數(shù)器(qì)

我們先來(lái)看一個(gè)實例,用localStorage來(lái)做(zuò)一個(gè)計(jì)數(shù)器(qì),計(jì)算(suàn)用戶訪問頁面的次數(shù)。

var count = localStorage.getItem("pagecount");
if(count){
	count = Number(localStorage.pagecount) +1;
}else{
	count = 1;
}
document.write("view times:"+count);

運行(xíng)以上(shàng)代碼後,你(nǐ)會(huì)發現隻要每次刷新頁面,訪問次數(shù)會(huì)加1,如果你(nǐ)關掉頁面下次打開(kāi),還(hái)能看到訪問次數(shù)在增加并且一直保存在你(nǐ)電(diàn)腦(nǎo)裏,直到有(yǒu)一天你(nǐ)使用removeItem()清空(kōng)存儲的數(shù)據。

示例2.記錄頁面狀态

在頁面中,我們有(yǒu)一個(gè)TAB标簽,點擊後可(kě)以切換不同的TAB對應的內(nèi)容,我們現在要做(zuò)的是本地保存用戶點擊的是哪個(gè)TAB,以及對應的展示內(nèi)容,當用戶刷新頁面或者關閉後N長時(shí)間(jiān)再打開(kāi)該頁面時(shí),TAB的對應狀态保留上(shàng)次關閉頁面時(shí)的狀态。

HTML

我們在頁面上(shàng)建立5個(gè)TAB,并對應5個(gè)list。




接着我們用CSS來(lái)規範下頁面。

CSS

#nav{height:42px; border:1px solid #d3d3d3; background:#f7f7f7;-moz-border-radius:2px; 
-webkit-border-radius:2px; border-radius:2px; -moz-box-shadow:1px 1px 2px rgba(0,0,0,.2); 
-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.2); box-shadow:1px 1px 2px rgba(0,0,0,.2);}
#nav li{float:left; height:42px; line-height:42px; padding:0 10px; 
border-right:1px solid #d3d3d3; font-size:14px; font-weight:bold}
#nav li.cur{background:#f1f1f1; border-top:1px solid #f60; box-shadow:none}
#nav li a{text-decoration:none; display:block}
#nav li.cur a{color:#333}
#nav li a:hover{color:#f30}

#page{margin:20px auto}
.list{display:none}

如果你(nǐ)的浏覽器(qì)支持CSS3的話(huà),你(nǐ)将看到圓角和(hé)陰影(yǐng)效果。

最後我們來(lái)實現本地存儲的功能。我們的功能基于jquery庫,所以記得(de)在html中先載入jquery庫文件,當然你(nǐ)也可(kě)以使用原生(shēng)的javascript代碼來(lái)實現。

var show = 0; //定義默認展示的是第一個(gè)TAB選中狀态
if (window.localStorage){ //如果浏覽器(qì)支持localStorage
	var navShow = localStorage.getItem("shownum"); //獲取客戶端TAB狀态
	if(navShow==null){ //如果為(wèi)空(kōng),即第一次打開(kāi)
		//将默認的第一個(gè)TAB設置為(wèi)選中狀态并顯示與其對應的list
		$("#nav ul li").eq(show).addClass("cur").siblings().removeClass("cur");
		$(".list").eq(show).show().siblings().hide();
	}
	$("#nav ul li").each(function(index){ //遍曆每個(gè)TAB
		var li = $(this);
		show = li.attr("cur")==true?index:show; //如果當前TAB被點擊選中,則将show值設為(wèi)當前的索引值
		if(index==navShow){ //如果當前索引值與存儲的TAB狀态值一緻
			li.addClass("cur"); //設置為(wèi)選中狀态樣式
			$(".list").eq(index).show().siblings().hide(); //顯示對應的list
		}
		li.click(function(){ //當單擊當前TAB時(shí)
			li.addClass("cur").siblings().removeClass("cur");//設置為(wèi)選中狀态樣式
			$(".list").eq(index).show().siblings().hide(); //顯示對應的list
			localStorage.setItem("shownum",index); //将TAB選中狀态存儲到本地
		});
	});
}else{//如果浏覽器(qì)不支持localStorage
	alert('您的浏覽器(qì)不支持localStorage.');
}

我們首先獲取本地數(shù)據,得(de)到對應的選中狀态的TAB,如果未能獲取到,則調用默認值,即選中第一個(gè)TAB。遍曆TAB時(shí),如果發現某個(gè)TAB是選中狀态,則設置選中樣式cur,即完成了TAB初始化的過程。接下來(lái)用戶操作(zuò),當點擊任意TAB時(shí),設置對應的樣式,并保存狀态到本地,下次刷新就可(kě)以看到上(shàng)次保存的狀态。