IndexedDB是用于客户端的大量的结构化数据存储和使用索引高效率搜索数据的API,它是基于W3C拟定的草案索引数据库的API。相对DOM存储的小存储数据量,IndexedDB具有大容量的数据存储功能,它分别为同步数据和异步数据提供的API,但目前只有异步数据的API在Gecko2.0 上实现。
IndexDB的特点:
1. IndexedDB存储为键值对:它可以存储一些复杂的对象,而键可以存储这些对像的属性值,并且可以使用索引对对象的属性的快速检索。
2. IndexedDB建立在交互数据库模型的基础上:任何对IndexedDB的操作都发生一个交互操作(transaction),如它提供的索引、表、游标等均与一个transaction关联,它定义了交互的生存时间与结束时抛出的事件,这样能很好的处理web程序在不同的tab窗口中实例的互操作。
3. IndexedDB的API大多是异步的:你可以向数据库发出操作的“请求”,当操作完成时会产生一个DOM事件,通过事件的类型会知道操作是否成功。
4. IndexedDB使用“请求”机制:操作对象会接收到DOM的success和failure事件,它也有相应的onsuccess和onerror的属性;对象还有readyState、result和errorCode属性来查看当前“请求”的状态,而result属性则根据不同的“请求”返回不同的结果。
5. IndexedDB 使用DOM事件机制来处理“请求”的结果:DOM事件的type属性提示操作是否成功,target属性指向发生“请求”的对象(大多数情况下是IDBRequest对象)。
6. IndexedDB工作基本模式:
a.创建一个交互操作对象
b.发送操作"请求"
c.通过监听DOM事件等待操作完成
d.处理"请求"结果
下面是使用IndexDB的实例:
<!DOCTYPE html> <html> <head> <title>HTML 5 Application - IndexedDb</title> <script type="text/javascript"> var blockbusters={ title:"indexDB", derector:"HTML5 function", length:120 };//假设这个object用来保存的 var db; var request; var store; function createDatabase(dbName) { request=indexedDB.open(dbName,3);//如果存在的话,就打开;如果不存在的话,就新建 //打开数据库失败,onerror事件被触发 request.onerror = function () { alert("fail to open datbase with:"+event.target.message); } //打开数据库成功,onsuccess事件被触发 request.onsuccess = function (event) { alert("success open the database!"); // store.add(ss); db=event.target.result; var transaction = db.transaction(["blockbusters"], "readwrite");//可读可写事务方式 var objectStore = transaction.objectStore("blockbusters"); objectStore.add(blockbusters); // var store = db.createObjectStore("blockbusters", {keyPath: "title",autoIncrement: false}); // store.createIndex("director", "director", { unique: false }); // var transaction = db.transaction(["blockbusters"],readwirte); // store = transaction.objectStore("blockbusters"); // request = store.put(video); } //在新的数据库创建或数据库版本号被更改时,onupgradeneeded事件被触发 request.onupgradeneeded = function(event) { alert("version Change"); db = event.target.result; store = db.createObjectStore("blockbusters", {keyPath: "title",autoIncrement: false}); // store.createIndex("director", "director", { unique: false }); } } function deletedatabase(dbName){ try{ indexedDB.deleteDatabase(dbName); }catch(e){ alert(e.getMessage); } } </script> </head> <body> <button onclick="createDatabase('Test')">Create Database</button> <button onclick="deletedatabase('customers')">delet Database</button> </body> </html>
运行效果:
相关推荐
标题中提到的“HTML5 IndexDB”是指HTML5中的Indexed Database API,它提供了一种在客户端存储大量结构化数据的方式,特别是对于不需要服务器交互的场景非常有用。相较于传统的Web存储技术如localStorage,IndexedDB...
本“android手机HTML5demo”提供了一个实例,帮助开发者了解如何在Android环境中实现HTML5技术。 在Android平台上,HTML5主要通过WebView组件来展示和运行。WebView是一个可以加载和显示网页内容的视图,它是...
HTML5的IndexedDB是一个强大的本地存储机制,它允许在客户端存储大量结构化的数据。相比于Web Storage,IndexedDB更适合处理大规模、复杂的数据结构。在本文中,我们将深入探讨如何使用IndexedDB进行数据操作,包括...
1. **打开数据库(Open Database)**:首先,我们需要通过`window.indexedDB.open()`方法创建一个新的数据库实例,指定数据库名称和版本号。 2. **创建对象存储(Create Object Store)**:在数据库中创建一个对象存储,...
综上所述,"解开绳子HTML5游戏源码"是一个展示HTML5强大功能的实例,涵盖了从图形渲染、音频处理到本地数据存储等多个方面,对于想要学习HTML5游戏开发的人员来说,这是一个非常有价值的参考资料。通过深入研究这款...
最后,HTML5的离线存储特性(如localStorage或indexDB)可以让页面在用户离线时仍能访问某些数据,这在表白页面中可能用于保存用户的个性化设置或表白记录。 综上所述,"520表白html5爱心代码"是一个利用HTML5的...
HTML5是超文本标记语言的最新版本,它引入了许多新特性,如语义化标签(例如、、、等),多媒体支持(和元素),离线存储(通过localStorage和indexDB实现),以及增强的表单控件等。这些特性使得HTML5成为现代网页...
- **数据库(Database)**:每个IndexedDB实例都是一个独立的数据库,数据库由用户创建并命名。 - **对象存储(Object Store)**:类似于关系数据库中的表,用于存储数据。每个对象存储都有一个唯一的名字,并可以...
运行“离线”-一个自包含的纯HTML5渐进式Web应用程序。 设置媒体项目的开始结束时间(例如,减少尾声) 将YouTube完整专辑拆分为单独的歌曲。 将您自己的Audius实例作为单个HTML文件运行。 播放Imgur“ Most ...
dexie.js是一个JavaScript库,它作为HTML5 IndexedDB的一个轻量级封装器,提供了类SQL的语言接口,使得在Web应用中使用IndexedDB变得更加便捷。 IndexedDB是浏览器原生提供的一种NoSQL型数据库,用于在客户端持久化...
同时,HTML5也支持离线存储(通过`localStorage`或`indexDB`),这样即使在网络不稳定的情况下,用户仍然能查看之前加载过的引言。 总的来说,【random-quote】项目展示了如何利用HTML创建基本的网页结构,以及如何...
5. **适配API**:由于IndexedDB的异步性质,需要确保所有操作都在成功回调或Promise链中处理。 6. **兼容性检查**:确保代码在没有WebSQL的浏览器中也能正常工作,可以使用feature detection进行检测并提供降级方案...