HTML5 indexedDB簡介


本篇文章主要講解HTML5的本地存儲,使用到的技術是indexedDB。

對於本地存儲這個概念想必大家都已經有所了解了,就是把一些數據存儲到瀏覽器中,當與網絡斷開時,可以從瀏覽器中讀取數據,用來做一些離線應用。

IndexedDB的技術特點是,不需要你去寫特定的sql語句來對數據進行操作,它是nosql的,數據形式使用的是json。

下面講解一個例子,以這個例子來說明一些關鍵的代碼。

這個簡單的例子是能增加一個人的信息,並且能刪除之。先附上一個效果圖:

1

添加刪除信息時配合firebug信息的效果:

2

示例還是蠻簡單的,下面我們來分析一下使用indexedDB的一般步驟,這里只着重講解一些回調函數和對象,剩下的工作還需要讀者自行分析,最后會給出完整的源代碼示例。

我們首先需要根據不同瀏覽器的內核,創建indexedDB對象,如下:

var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;

之后,我們需要打開一個數據庫,我這里起名叫做persons:

openRequest = indexedDB.open("persons");

這里還需要說明一下,open方法是異步方法,我們在這里需要處理它的回調函數即可。例如:

openRequest.onsuccess = function(e)
{
……
}
openRequest.onerror = function (event)
{
……
}
openRequest.onupgradeneeded = function(e)
{
……
}

我們可以看到,我們需要對成功和錯誤的回調函數進行處理。onupgradeneeded這個回調函數又是做什么的呢?當數據庫發生改變時,我們需要處理這個回調函數。比如說,當某個數據庫不存在需要創建,或者數據庫更改時。我們一般需要在該回調函數內創建objectStore,它就相當於數據庫中的某個表一樣。

當我們需要對表中的數據進行遍歷時,我們可能需要用到下述代碼:

var transaction = db.transaction(["person"],"readwrite");
var objectStore = transaction.objectStore("person");
objectStore.openCursor().onsuccess = function(event)
{
var cursor = event.target.result;
if (cursor)
{
……
}
}
objectStore.openCursor().onerror = function(event)
{
……
}

凡是對數據的讀寫操作,一般都會用到transacation,它也是異步的。例如,當我們需要讀取數據時,有個游標對象,我們操作它就可以很方便的讀取數據了。

其他的一些接口就不在這里一一介紹了,感興趣的朋友可以查看以下網址:

https://developer.mozilla.org/en/IndexedDB/Using_IndexedDB

這個是mozilla官方提供的API。

下面還要說重要的一點,就是運行環境。

1.頁面必須依托於服務器才能正常顯示,單獨打開頁面是無法正常顯示的,請把頁面發布到服務器中,如IIS、Tomcat、或者調試環境自帶的輕量級服務器等。

2.筆者在firefox14及以上版本運行代碼無誤;IE9及更早版本並不支持,據說IE10正式版支持,但是這點筆者並沒有實際測試過;opera(當前版本12)目前尚不支持;chrome(當前版本24)支持indexedDB部分功能,但是本例中代碼並不能正常運行,據說因為不支持onupgradeneeded這個回調函數,也許chrome有自己的實現策略,這就需要讀者自己查找資料了。

下面給出源代碼:

點我下載

請注明本文原始鏈接:http://www.cnblogs.com/Johnny_Z/archive/2012/11/04/2753331.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM