indexedDB是储存很多构造化数据信息的API,demo选用到的是多线程API,不便的便是全部对indexedDB的实际操作都会产生1个多线程的‘恳求’,要是熟习了API实际操作起来也很简易。
大致步骤是这样
1.开启数据信息库
JavaScript Code拷贝內容到剪贴板
- 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仅有这1个方式 开启(数据信息库名)
- 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 临时用到两个主要参数,数据信息库&&主键
- }
- }
- }
这样就 建立/联接 了1个数据信息库
2.建立互动目标 && 监视dom恶性事件 && 解决数据信息
随后便是要实际操作数据信息库了
JavaScript Code拷贝內容到剪贴板
- //插进数据信息 临时只插进1列
- 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()
- };//1个小数据信息 adsid是主键
- var request = store.put(data); //‘强行’插进
- request.onsuccess = function(e) {
- //取得成功后实行1些实际操作
- };
- request.onerror = function(e) {
- console.log("Error Adding: ", e);
- };
JavaScript Code拷贝內容到剪贴板
- //载入数据信息
- 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(); //循环系统载入全部数据信息
- };
JavaScript Code拷贝內容到剪贴板
- //删掉数据信息
- ...
- store.delete('键值')
- ...
出了1个小demo
XML/HTML Code拷贝內容到剪贴板
- <!DOCTYPE html>
- <html>
- <head>
- <script>
- var indexedDB = window.indexedDB || window.webkitIndexedDB ||
- window.mozIndexedDB;
- if ('webkitIndexedDB' in window) {
- windowwindow.IDBTransaction = window.webkitIDBTransaction;
- windowwindow.IDBKeyRange = window.webkitIDBKeyRange;
- }
- adsageIDB = {};
- adsageIDB.db = null;
- adsageIDB.onerror = function(e) {
- console.log(e);
- };
- adsageIDB.open = function() {
- var request = indexedDB.open("adsageIDB");
- request.onsuccess = function(e) {
- var v = "1.00";
- adsageIDB.db = e.target.result;
- var db = adsageIDB.db;
- if (v!= db.version) {
- var setVrequest = db.setVersion(v);
- setVrequest.onerror = adsageIDB.onerror;
- setVrequest.onsuccess = function(e) {
- if(db.objectStoreNames.contains("todo")) {
- db.deleteObjectStore("todo");
- }
- var store = db.createObjectStore("todo",
- {keyPath: "adsid"});
- adsageIDB.getAllTodoItems();
- };
- }
- else {
- adsageIDB.getAllTodoItems();
- }
- };
- request.onerror = adsageIDB.onerror;
- }
- adsageIDB.addTodo = function(todoText) {
- var db = adsageIDB.db;
- var trans = db.transaction(["todo"], IDBTransaction.READ_WRITE);
- var store = trans.objectStore("todo");
- var data = {
- "text": todoText,
- "adsid": new Date().getTime()
- };
- var request = store.put(data);
- request.onsuccess = function(e) {
- adsageIDB.getAllTodoItems();
- };
- request.onerror = function(e) {
- console.log("Error Adding: ", e);
- };
- };
- adsageIDB.deleteTodo = function(id) {
- var db = adsageIDB.db;
- var trans = db.transaction(["todo"], IDBTransaction.READ_WRITE);
- var store = trans.objectStore("todo");
- var request = store.delete(id);
- request.onsuccess = function(e) {
- adsageIDB.getAllTodoItems();
- };
- request.onerror = function(e) {
- console.log("Error Adding: ", e);
- };
- };
- adsageIDB.getAllTodoItems = function() {
- var todos = document.getElementById("todoItems");
- todos.innerHTML = "";
- var db = adsageIDB.db;
- var trans = db.transaction(["todo"], IDBTransaction.READ_WRITE);
- var store = trans.objectStore("todo");
- var keyRange = IDBKeyRange.lowerBound(0);
- var cursorRequest = store.openCursor(keyRange);
- cursorRequest.onsuccess = function(e) {
- var result = e.target.result;
- if(!!result == false)
- return;
- renderTodo(result.value);
- result.continue();
- };
- cursorRequest.onerror = adsageIDB.onerror;
- };
- function renderTodo(row) {
- var todos = document.getElementById("todoItems");
- var li = document.createElement("li");
- var a = document.createElement("a");
- var t = document.createTextNode(row.text);
- a.addEventListener("click", function() {
- adsageIDB.deleteTodo(row.adsid);
- }, false);
- a.textContent = " [删掉]";
- li.appendChild(t);
- li.appendChild(a);
- todos.appendChild(li)
- }
- function addTodo() {
- var todo = document.getElementById("todo");
- adsageIDB.addTodo(todo.value);
- todo.value = "";
- }
- function init() {
- adsageIDB.open();
- }
- window.addEventListener("DOMContentLoaded", init, false);
- </script>
- </head>
- <body>
- <ul id="todoItems"></ul>
- <input type="text" id="todo" name="todo" placeholder="adsageIDB text?" />
- <input type="submit" value="提升1个 IDB" onclick="addTodo(); return false;"/>
- </body>
- </html>
以上这篇html5 初试 indexedDB(强烈推荐)便是网编共享给大伙儿的所有內容了,期待能给大伙儿1个参照,也期待大伙儿多多适用脚本制作之家。
原文详细地址:http://www.cnblogs.com/androidshouce/archive/2016/07/21/5690444.html