Javascript-離線應(yīng)用和客戶端存儲(chǔ)

一、離線檢測(cè)

開發(fā)離線應(yīng)用的第一步是要知道設(shè)備是在線還是離線,HTML5為此定義了一個(gè)navigator.onLine屬性,這個(gè)屬性值為true 表示設(shè)備能上網(wǎng)礼饱,值為false 表示設(shè)備離線。

if(navigator.onLine){
    //正常工作
}else{
    //執(zhí)行離線狀態(tài)時(shí)的工作
}

HTML5 還定義了兩個(gè)事件:online 和offline究驴。當(dāng)網(wǎng)絡(luò)從離線變?yōu)樵诰€或者從在線變?yōu)殡x線時(shí)镊绪,分別觸發(fā)這兩個(gè)事件

二、應(yīng)用緩存

HTML5 的應(yīng)用緩存(application cache)洒忧,或者簡(jiǎn)稱為appcache蝴韭,是專門為開發(fā)離線Web 應(yīng)用而設(shè)計(jì)的。Appcache 就是從瀏覽器的緩存中分出來的一塊緩存區(qū)熙侍。要想在這個(gè)緩存中保存數(shù)據(jù)榄鉴,可以使用一個(gè)描述文件(manifest file),列出要下載和緩存的資源蛉抓。

三庆尘、數(shù)據(jù)存儲(chǔ)

1、Cookie

2巷送、IE用戶數(shù)據(jù)

3驶忌、Web存儲(chǔ)機(jī)制

Web Storage 的目的是克服由cookie 帶來的一些限制,當(dāng)數(shù)據(jù)需要被嚴(yán)格控制在客戶端上時(shí)笑跛,無(wú)須持續(xù)地將數(shù)據(jù)發(fā)回服務(wù)器付魔。Web Storage 的兩個(gè)主要目標(biāo)是:
提供一種在cookie 之外存儲(chǔ)會(huì)話數(shù)據(jù)的途徑聊品;
提供一種存儲(chǔ)大量可以跨會(huì)話存在的數(shù)據(jù)的機(jī)制。

  • Storage類型
    Storage 類型提供最大的存儲(chǔ)空間(因?yàn)g覽器而異)來存儲(chǔ)名值對(duì)兒几苍。Storage 的實(shí)例與其他對(duì)象類似翻屈,有如下方法。
    clear(): 刪除所有值妻坝;Firefox 中沒有實(shí)現(xiàn) 伸眶。
    getItem(name):根據(jù)指定的名字name 獲取對(duì)應(yīng)的值。
    key(index):獲得index 位置處的值的名字惠勒。
    removeItem(name):刪除由name 指定的名值對(duì)兒赚抡。
    setItem(name, value):為指定的name 設(shè)置一個(gè)對(duì)應(yīng)的值爬坑。
  • sessionStorage對(duì)象
    sessionStorage 對(duì)象存儲(chǔ)特定于某個(gè)會(huì)話的數(shù)據(jù)纠屋,也就是該數(shù)據(jù)只保持到瀏覽器關(guān)閉。這個(gè)對(duì)象就像會(huì)話cookie盾计,也會(huì)在瀏覽器關(guān)閉后消失售担。存儲(chǔ)在sessionStorage 中的數(shù)據(jù)可以跨越頁(yè)面刷新而存在,同時(shí)如果瀏覽器支持署辉,瀏覽器崩潰并重啟之后依然可用(Firefox 和WebKit 都支持族铆,IE 則不行)。
//使用方法存儲(chǔ)數(shù)據(jù)
sessionStorage.setItem("name", "Tom");
// 使用屬性存儲(chǔ)數(shù)據(jù)
sessionStorage.book = "Professional JavaScript";
  • globalStorage對(duì)象
    這個(gè)對(duì)象的目的是跨越會(huì)話存儲(chǔ)數(shù)據(jù)哭尝,但有特定的訪問限制哥攘。要使用globalStorage,首先要指定哪些域可以訪問該數(shù)據(jù)材鹦∈叛停可以通過方括號(hào)標(biāo)記使用屬性來實(shí)現(xiàn),如以下例子所示桶唐。
globalStorage["wrox.com"].name = "Tom";
var name = globalStorage["wrox.com"].name;
  • localStorage對(duì)象
    localStorage 對(duì)象在修訂過的HTML 5 規(guī)范中作為持久保存客戶端數(shù)據(jù)的方案取代了globalStorage。與globalStorage 不同,不能給localStorage 指定任何訪問規(guī)則步悠;規(guī)則事先就設(shè)定好了巾钉。要訪問同一個(gè)localStorage 對(duì)象,頁(yè)面必須來自同一個(gè)域名(子域名無(wú)效)坯约,使用同一種協(xié)議熊咽,在同一個(gè)端口上。這相當(dāng)于globalStorage[location.host]闹丐。
localStorage.setItem("name", "Tom");
localStorage.book = "Professional JavaScript";
var name = localStorage.getItem("name");
var book = localStorage.book;
  • Sorage事件
    對(duì)Storage 對(duì)象進(jìn)行任何修改横殴,都會(huì)在文檔上觸發(fā)storage 事件。當(dāng)通過屬性或setItem()方法保存數(shù)據(jù)妇智,使用delete 操作符或removeItem()刪除數(shù)據(jù)滥玷,或者調(diào)用clear()方法時(shí)氏身,都會(huì)發(fā)生該事件。這個(gè)事件的event 對(duì)象有以下屬性惑畴。
    ?domain:發(fā)生變化的存儲(chǔ)空間的域名蛋欣。
    ?key:設(shè)置或者刪除的鍵名。
    ?newValue:如果是設(shè)置值如贷,則是新值陷虎;如果是刪除鍵,則是null杠袱。
    ?oldValue:鍵被更改之前的值尚猿。

4、IndexedDB

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末楣富,一起剝皮案震驚了整個(gè)濱河市凿掂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纹蝴,老刑警劉巖庄萎,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異塘安,居然都是意外死亡糠涛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門兼犯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忍捡,“玉大人,你說我怎么就攤上這事切黔≡壹梗” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵绕娘,是天一觀的道長(zhǎng)脓规。 經(jīng)常有香客問我,道長(zhǎng)险领,這世上最難降的妖魔是什么侨舆? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮绢陌,結(jié)果婚禮上挨下,老公的妹妹穿的比我還像新娘。我一直安慰自己脐湾,他們只是感情好臭笆,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般愁铺。 火紅的嫁衣襯著肌膚如雪鹰霍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天茵乱,我揣著相機(jī)與錄音茂洒,去河邊找鬼。 笑死瓶竭,一個(gè)胖子當(dāng)著我的面吹牛督勺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斤贰,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼智哀,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了荧恍?” 一聲冷哼從身側(cè)響起瓷叫,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎块饺,沒想到半個(gè)月后赞辩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡授艰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了世落。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淮腾。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖屉佳,靈堂內(nèi)的尸體忽然破棺而出谷朝,到底是詐尸還是另有隱情,我是刑警寧澤武花,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布圆凰,位于F島的核電站,受9級(jí)特大地震影響体箕,放射性物質(zhì)發(fā)生泄漏专钉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一累铅、第九天 我趴在偏房一處隱蔽的房頂上張望跃须。 院中可真熱鬧,春花似錦娃兽、人聲如沸菇民。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)第练。三九已至阔馋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間娇掏,已是汗流浹背垦缅。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驹碍,地道東北人壁涎。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像志秃,于是被迫代替她去往敵國(guó)和親怔球。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容