麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 開發(fā) > HTML5 > 正文

HTML5離線應(yīng)用與客戶端存儲(chǔ)的實(shí)現(xiàn)

2024-09-05 07:22:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

支持離線 Web 應(yīng)用開發(fā)是 HTML5 的另一個(gè)重點(diǎn)。所謂離線 Web 應(yīng)用,就是在設(shè)備不能上網(wǎng)的情況下仍然可以運(yùn)行的應(yīng)用。

開發(fā)離線Web 應(yīng)用需要幾個(gè)步驟。首先是確保應(yīng)用知道設(shè)備是否能上網(wǎng),以便下一步執(zhí)行正確的操作。然后,應(yīng)用還必須能訪問一定的資源(圖像、Javascript、CSS等),只有這樣才能正常工作。最好,必須有一塊本地空間用戶保存數(shù)據(jù),無(wú)論能否上網(wǎng)都不妨礙讀寫。

HTML5 及其相關(guān)的 API讓開發(fā)離線應(yīng)用成為現(xiàn)實(shí)。

離線檢測(cè)

要知道設(shè)備是否在線還是離線,HTML5 定義了一個(gè) navigator.onLine 屬性,這個(gè)屬性值為 true 表示設(shè)備能上網(wǎng),值為 false 表示設(shè)備離線。

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

由于 navigator.onLine 存在一定的兼容性問題,因此除了 navigator.onLine 屬性之外,為了更好地確定網(wǎng)絡(luò)是否可用,HTML5 還定義了兩個(gè)事件 online 和 offline。

當(dāng)網(wǎng)絡(luò)在離線和在線之間切換時(shí)在 window 對(duì)象上觸發(fā)這兩個(gè)事件:

window.addEventListener('online', function() {    // 正常工作});window.addEventListener('offline', function() {    // 執(zhí)行離線狀態(tài)時(shí)的任務(wù)});

在實(shí)際應(yīng)用中,最好在頁(yè)面加載后,最好先通過 navigator.onLine 取得初始的狀態(tài)。然后通過上述兩個(gè)事件來(lái)確定網(wǎng)絡(luò)連接狀態(tài)是否變化。當(dāng)上述事件觸發(fā)時(shí),navigator.onLine 屬性的值也會(huì)改變,不過必須要手工輪詢這個(gè)屬性才能檢測(cè)到網(wǎng)絡(luò)狀態(tài)的變化。

應(yīng)用緩存

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

CACHE MANIFEST# Commentfile.jsfile.css

然后在 html 中引用:

<html manifest="./xxx.manifest">

xxx.manifest 文件的 MIME 類型必須是 text/cache-manifest。

該 API 的核心是 applicationCache 對(duì)象,這個(gè)對(duì)象有一個(gè) status 屬性,屬性的值是常量,表示應(yīng)用緩存的如下當(dāng)前狀態(tài):

  • 0: 無(wú)緩存,即沒有與頁(yè)面相關(guān)的應(yīng)用緩存
  • 1: 閑置,即應(yīng)用緩存未得到更新
  • 2: 檢查中,即正在下載描述文件并檢查更新
  • 3: 下載中,即應(yīng)用緩存正在下載描述文件中指定的資源
  • 4: 更新完成,即應(yīng)用緩存已經(jīng)更新了資源,而且所有資源都已下載完畢,可以通過 swapCache() 來(lái)使用了
  • 5: 廢棄,即應(yīng)用緩存的描述文件已經(jīng)不存在了,因此頁(yè)面無(wú)法再訪問應(yīng)用緩存

相關(guān)事件:

  • checking: 在瀏覽器為應(yīng)用緩存查找更新時(shí)觸發(fā)
  • error: 在檢查更新或者下載資源期間發(fā)生錯(cuò)誤時(shí)觸發(fā)
  • noupdate: 在檢查描述文件發(fā)現(xiàn)文件無(wú)變化時(shí)觸發(fā)
  • downloading: 在開始下載應(yīng)用緩存資源時(shí)觸發(fā)
  • progress: 在文件下載應(yīng)用緩存的過程中持續(xù)不斷地觸發(fā)
  • updateready: 在頁(yè)面新的應(yīng)用緩存下載完畢且可以通過 swapCache() 使用時(shí)觸發(fā)
  • cached: 在應(yīng)用緩存完整可用時(shí)觸發(fā)

一般來(lái)講,這些事件會(huì)隨著頁(yè)面加載按上述順序依次觸發(fā)。也可以通過調(diào)用 update() 方法手動(dòng)觸發(fā)上述事件。

數(shù)據(jù)存儲(chǔ)

Cookie

HTTP Cookie,通常直接叫做 cookie,是在客戶端用于存儲(chǔ)會(huì)話信息的。該標(biāo)準(zhǔn)要求服務(wù)器對(duì)任意 HTTP 請(qǐng)求發(fā)送 Set-Cookie HTTP 頭信息作為響應(yīng)的一部分,其中包含會(huì)話信息。服務(wù)器響應(yīng)頭示例:

HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value
Other-header: other-header-value

然后瀏覽器 Set-Cookie 的會(huì)話信息,之后為每個(gè)請(qǐng)求添加 Cookie HTTP 頭將信息發(fā)送回服務(wù)器,如下所示:

GET /index.html HTTP/1.1
Cookie: name=value
Other-header: other-header-value

發(fā)送回服務(wù)器的額外信息可以用于唯一驗(yàn)證客戶來(lái)自于發(fā)送的哪個(gè)請(qǐng)求。

完整的 cookie 包括:

  1. 名稱: 一個(gè)唯一確定 cookie 的名稱。必須被 URL 編碼。
  2. 值: 存儲(chǔ)在 cookie 中的字符串值。必須被 URL 編碼。
  3. 域: cookie 對(duì)于哪個(gè)域是有效的。
  4. 路徑: 對(duì)于指定域中的那個(gè)路徑,應(yīng)該向服務(wù)器發(fā)送 cookie。
  5. 失效時(shí)間: 表示 cookie 何時(shí)應(yīng)該被刪除的時(shí)間戳。
  6. 安全標(biāo)志: 指定后,cookie 只有在使用 SSL 連接的時(shí)候才發(fā)送到服務(wù)器。


復(fù)制代碼
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 手机国产乱子伦精品视频 | 视频一区二区三区在线观看 | 万圣街在线观看免费完整版 | 91成人免费在线观看 | 久久视频精品 | 午夜精品福利在线观看 | 日韩视频在线一区二区三区 | 成人三级电影在线 | 午夜生活理论片 | 欧美日本在线视频 | 欧美成人影院 | 欧美不卡| cosplay裸体福利写真 | 久草在线公开视频 | 四虎久草| 国产免费一区视频 | 一区二区三视频 | 主人在调教室性调教女仆游戏 | 爽爽视频免费看 | 成人黄色小视频网站 | 久久99久久99免费视频 | 精品一区二区在线观看视频 | 精品国产一区二区三区四区在线 | 男人久久天堂 | 黄色日韩网站 | 女人裸体让男人桶全过程 | 亚洲欧美国产高清 | 91成人在线免费 | 欧洲成人一区二区 | 一级毛片电影院 | 国产在线区 | 91av网址| 久久久久国产成人精品亚洲午夜 | 久久艹一区| 91 免费看片 | 在线看三级| 久久久久久久久久久久99 | 91久久精品一区二区 | 亚洲欧美在线视频免费 | 久久蜜桃香蕉精品一区二区三区 | 亚洲性综合网 |