ホームページ > ウェブフロントエンド > H5 チュートリアル > html5 ではまず IndexedDB を試してみる (推奨)

html5 ではまず IndexedDB を試してみる (推奨)

黄舟
リリース: 2017-02-20 13:24:43
オリジナル
1547 人が閲覧しました

IndexedDB は、大量の構造化データを保存する API です。このデモでは、非同期 API が使用されています。この API に慣れている限り、問題は、indexedDB でのすべての操作が非同期の「リクエスト」になることです。操作はとても簡単です。

一般的なプロセスは次のとおりです

1. データベースを開きます

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

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

 

       

 

    if ('webkitIndexedDB' in window) {  

 

        window.IDBTransaction = window.webkitIDBTransaction;  

 

        window.IDBKeyRange = window.webkitIDBKeyRange;  

 

    }  

 

    //这个就不解释了  

 

       

 

    var request = indexedDB.open("adsageIDB");  //open  : indexedDB只有这一个方法  打开(数据库名)  

 

    request.onsuccess = function(e) { //异步  

 

        var v = "1.00";  

 

        var db = e.target.result;  

 

       

 

        if (v!= db.version) {  

 

            var setVrequest = db.setVersion(v);  

 

            setVrequest.onsuccess = function(e) { //异步  

 

                if(db.objectStoreNames.contains("todo")) {  

 

                    db.deleteObjectStore("todo");  

 

                }  

 

                var store = db.createObjectStore("todo", {keyPath: "adsid"});//onsuccess 后创建ObjectStore  暂时用到两个参数,数据库&&主键  

 

            }  

 

        }      

 

    }

ログイン後にコピー


これにより、インタラクティブなオブジェクトを作成し、DOMイベントをリッスンし、データを処理します

それから、データベースを操作したいR

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

//插入数据 暂时只插入一列   

 

    var trans = db.transaction(["todo"], IDBTransaction.READ_WRITE);//创建transaction   

 

    var store = trans.objectStore("todo");//创建Store  

 

    //要操作数据必须建立transaction 和 Store  

 

       

 

    var data = {  

 

        "text": todoText,  

 

        "adsid": new Date().getTime()  

 

    };//一个小数据 adsid是主键  

 

       

 

    var request = store.put(data); //‘强行’插入  

 

       

 

    request.onsuccess = function(e) {  

 

        //成功后执行一些操作  

 

    };  

 

       

 

    request.onerror = function(e) {  

 

        console.log("Error Adding: ", e);  

 

    };

ログイン後にコピー
e

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

//读取数据  

 

    var trans = db.transaction(["todo"], IDBTransaction.READ_WRITE);  

 

    var store = trans.objectStore("todo");  

 

       

 

    var keyRange = IDBKeyRange.lowerBound(0);  

 

    var cursorRequest = store.openCursor(keyRange);  

 

    //这里用到指针cursor ,openCursor的参数 keyRange是遍历范围 还可以添加遍历方向参数  

 

    //另一种方法是get() 这个就比较简单了直接store.get('键值')就行  

 

       

 

    cursorRequest.onsuccess = function(e) {  

 

        var result = e.target.result;  

 

        if(!!result == false)  

 

        return;  

 

       

 

        console.log(result.value);  

 

        result.continue(); //循环读取所有数据  

 

    };

ログイン後にコピー
ee


rreeeee




就就就就就就就就就就就in indexeddb(推奨)は、Xiaobianによってすべてのコンテンツに共有されています詳細については、PHP 中国語 Web サイト (www.php.cn) をご覧ください。


-->

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート