Advertisement
Guest User

IndexedDB example

a guest
Jan 14th, 2013
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.91 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>IndexedDB</title>
  6. <script type="text/javascript">
  7. var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;
  8. var IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction;
  9. var db;
  10. (function () {
  11. var peopleData = [
  12. { name: "John Dow", email: "john@company.com" },
  13. { name: "Don Dow", email: "don@company.com" }
  14. ];
  15.  
  16. function initDb() {
  17. var request = indexedDB.open("PeopleDB", 1);
  18. request.onsuccess = function (evt) {
  19. db = request.result;
  20. };
  21.  
  22. request.onerror = function (evt) {
  23. console.log("IndexedDB error: " + evt.target.errorCode);
  24. };
  25.  
  26. request.onupgradeneeded = function (evt) {
  27. var objectStore = evt.currentTarget.result.createObjectStore(
  28. "people", { keyPath: "id", autoIncrement: true });
  29.  
  30. objectStore.createIndex("name", "name", { unique: false });
  31. objectStore.createIndex("email", "email", { unique: true });
  32.  
  33. for (i in peopleData) {
  34. objectStore.add(peopleData[i]);
  35. }
  36. };
  37. }
  38.  
  39. function contentLoaded() {
  40. initDb();
  41. var btnAdd = document.getElementById("btnAdd");
  42. var btnDelete = document.getElementById("btnDelete");
  43. var btnPrint = document.getElementById("btnPrint");
  44.  
  45. btnAdd.addEventListener("click", function () {
  46. var name = document.getElementById("txtName").value;
  47. var email = document.getElementById("txtEmail").value;
  48.  
  49. var transaction = db.transaction("people", IDBTransaction.READ_WRITE);
  50. var objectStore = transaction.objectStore("people");
  51. var request = objectStore.add({ name: name, email: email });
  52. request.onsuccess = function (evt) {
  53. // do something after the add succeeded
  54. };
  55. }, false);
  56.  
  57. btnDelete.addEventListener("click", function () {
  58. var id = document.getElementById("txtID").value;
  59.  
  60. var transaction = db.transaction("people", IDBTransaction.READ_WRITE);
  61. var objectStore = transaction.objectStore("people");
  62. var request = objectStore.delete(id);
  63. request.onsuccess = function(evt) {
  64. // It's gone!
  65. };
  66. }, false);
  67.  
  68. btnPrint.addEventListener("click", function () {
  69. var output = document.getElementById("printOutput");
  70. output.textContent = "";
  71.  
  72. var transaction = db.transaction("people", IDBTransaction.READ_WRITE);
  73. var objectStore = transaction.objectStore("people");
  74.  
  75. var request = objectStore.openCursor();
  76. request.onsuccess = function(evt) {
  77. var cursor = evt.target.result;
  78. if (cursor) {
  79. output.textContent += "id: " + cursor.key +
  80. " is " + cursor.value.name + " ";
  81. cursor.continue();
  82. }
  83. else {
  84. console.log("No more entries!");
  85. }
  86. };
  87. }, false);
  88. }
  89.  
  90. window.addEventListener("DOMContentLoaded", contentLoaded, false);
  91. })();
  92. </script>
  93. </head>
  94. <body>
  95. <div id="container">
  96. <label for="txtName">
  97. Name:
  98. </label>
  99. <input type="text" id="txtName" name="txtName" />
  100. <br />
  101. <label for="txtEmail">
  102. Email:
  103. </label>
  104. <input type="email" id="txtEmail" name="txtEmail" />
  105. <br />
  106. <input type="button" id="btnAdd" value="Add Record" />
  107. <br />
  108. <label for="txtID">
  109. ID:
  110. </label>
  111. <input type="text" id="txtID" name="txtID" />
  112. <br />
  113. <input type="button" id="btnDelete" value="Delete Record" />
  114. <br />
  115. <input type="button" id="btnPrint" value="Print objectStore" />
  116. <br />
  117. <output id="printOutput">
  118. </output>
  119. </div>
  120. </body>
  121. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement