HTML5 離線功能介紹

2022-02-21 19:08:02 字數 4668 閱讀 4288

清單 1. clock 應用**

the time is:

/* clock.css */

output

/* clock.js */

settimeout(function () , 1000);

當使用者在離線狀態下訪問「clock.html」時,頁面將無法展現。為了支援離線訪問,開發者必須新增 cache manifest 檔案,指明需要快取的資源。這個例子中的 cache manifest 檔案為「clock.manifest」,它宣告了 3 個需要快取的資源檔案「clock.html」、「clock.css」和「clock.js」。

清單 2. clock.manifest **

cache manifest

clock.html

clock.css

clock.js

新增了 cache manifest 檔案後,還需要修改「clock.html」,把 標籤的 manifest 屬性設定為「clock.manifest」。修改後的「clock.html」**如下。

清單 3. 設定 manifest 後的 clock.html **

the time is:

清單 4. cache manifest 示例**

cache manifest

# 上一行是必須書寫的。

images/sound-icon.png

images/background.png

network:

comm.cgi

# 下面是另一些需要快取的資源,在這個示例中只有乙個 css 檔案。

cache:

style/default.css

fallback:

/files/projects /projects

其中最常用的介面是 getitem 和 setitem。getitem 用於獲取指定 key 的 value,而 setitem 用於設定指定 key 的 value。

dom storage 示例

這裡給出乙個使用了 sessionstorage 的例子,localstorage 的用法與它相同。首先使用 setitem 新增了乙個名為「username」的項,它的值是「developerworks」。然後,呼叫 getitem 得到「username」的值,並且彈出提示框顯示它。最後,呼叫 removeitem 刪除「username」。

清單 6 dom storage 示例**

web sql database

除了 dom storage 以外,html5 中還有另外一種資料儲存方式 web sql database。它提供了基本的關聯式資料庫功能,支援頁面上的複雜的、互動式的資料儲存。它既可以用來儲存使用者產生的資料,也可以作為從伺服器獲取資料的本地快取記憶體。例如可以把電子郵件、日程等資料儲存到資料庫中。web sql database 支援資料庫事務的概念,從而保證了即使多個瀏覽器視窗操作同一資料,也不會產生衝突。

web sql database 基本用法

建立和開啟資料庫

使用資料庫的第一步是建立並開啟資料庫,api 是 opendatabase。當資料庫已經存在時,opendatabase 僅僅開啟資料庫;如果這個資料庫不存在,那麼就建立乙個空資料庫並且開啟它。opendatabase 的定義是:

database opendatabase(in domstring name, in domstring version,

in domstring displayname, in unsigned long estimatedsize,

in optional databasecallback creationcallback);

name:資料庫名。

version:資料庫版本。

displayname:顯示名稱。

estimatedsize:資料庫預估長度(以位元組為單位)。

creationcallback:**函式。

執行事務處理

在開啟資料庫以後,就可以使用事務 api transaction。每乙個事務作為運算元據庫的原子操作,不會被打斷,從而避免了資料衝突。transaction 的定義是:

void transaction(in sqltransactioncallback callback,

in optional sqltransactionerrorcallback errorcallback,

in optional sqlvoidcallback successcallback);

callback:事務**函式,其中可以執行 sql 語句。

errorcallback:出錯**函式。

successcallback:執行成功**函式。

執行 sql 語句

在事務的**函式 callback 中,可以執行 sql 語句,api 是 executesql。executesql 的定義是:

void executesql(in domstring sqlstatement,

in optional objectarray arguments, in optional sqlstatementcallback callback,

in optional sqlstatementerrorcallback errorcallback);

sqlstatement:sql 語句。

arguments:sql 語句需要的引數。

callback:**函式。

errorcallback:出錯**函式。

web sql database 示例

下面通過乙個例子說明 web sql database 的基本用法。它首先呼叫 opendatabase 建立了名為「foodb」的資料庫。然後使用 transaction 執行兩條 sql 語句。第一條 sql 語句建立了名為「foo」的表,第二條 sql 語句向表中插入一條記錄。

清單 7 web sql database 示例**

var db = opendatabase('foodb', '1.0', 'foodb', 2 * 1024);

db.transaction(function (tx) );

這個頁面的原始檔是 index.html,它的**如清單 8 所示。

清單 8 頁面 html **

在 body 中宣告了乙個按鈕和乙個無序列表。當按下「new note」按鈕時,newnote 函式將被呼叫,它用來新增一條新的便簽。而無序列表初始為空,它是用來顯示便簽的列表。

cache manifest 檔案

定義 cache manifest 檔案,宣告需要快取的資源。在這個例子中,需要快取「index.html」、「server.js」、「data.js」和「ui.js」等 4 個檔案。除了前面列出的「index.html」外,「server.js」、「data.js」和「ui.js」分別包含伺服器相關、資料儲存和使用者介面**。cache manifest 檔案定義如下。

清單 9 cache manifest 檔案

cache manifest

index.html

server.js

data.js

ui.js

使用者介面**

使用者介面**定義在 ui.js 中。

清單 10 使用者介面** ui.js

function newnote() }

function add(title)

function remove(title)

function adduiitem(title) }

} ui.js 中的**包含新增便簽和刪除便簽的介面操作。

新增便簽

使用者點選「new note」按鈕,newnote 函式被呼叫。

newnote 函式會彈出對話方塊,使用者輸入新便簽內容。newnote 呼叫 add 函式。

add 函式分別呼叫 adduiitem 和 adddataitem 新增頁面元素和資料。adddataitem **將在後面列出。

adduiitem 函式在頁面列表中新增一項。並指明 ondblclick 事件的處理函式是 remove,使得雙擊操作可以刪除便簽。

刪除便簽

使用者雙擊某便簽時,呼叫 remove 函式。

remove 函式分別呼叫 removeuiitem 和 removedataitem 刪除頁面元素和資料。removedataitem 將在後面列出。

removeuiitem 函式刪除頁面列表中的相應項。

資料儲存**

資料儲存**定義在 data.js 中。

清單 11 資料儲存** data.js

var storage = window['localstorage'];

var i = 0;

// 和伺服器同步新增操作

var str = storage.getitem("toadd");

if(str != null)

function removeserveritem(title)

function getserveritems()

由於這部分**與伺服器有關,這裡只說明各個函式的功能,具體實現可以根據不同伺服器編寫**。

在伺服器中新增一項:addserveritem

在伺服器中刪除一項:removeserveritem

返回伺服器中儲存的便簽列表:getserveritems

HTML5 離線儲存

首先來講解下離線儲存的使用方法,說起來也很簡單。只要在你的頁面頭部像下面一樣加入乙個manifest的屬性就可以了。然後cache.manifest檔案的書寫方式,就像下面這樣 cache manifest v0.11 cache css style.css network resourse log...

HTML5 離線儲存

首先來講解下離線儲存的使用方法,說起來也很簡單。只要在你的頁面頭部像下面一樣加入乙個manifest的屬性就可以了。manifest cache.manifest html 然後cache.manifest檔案的書寫方式,就像下面這樣 cache manifest v0.11 cache css s...

html5 離線儲存

資料 quzishen manifest檔案 1 cache manifest 2 上面一句必須 manifest檔案內容型別必須配置為text cache manifest傳送到瀏覽器 3 v1.0.0 版本號 如果想更新快取內容,只要修改下manifest檔案即可,如改版本號v1.0.1 45 ...