// see: https://github.com/DVLP/localStorageDB/blob/master/localStorageDB.js let db; const dbName = "_metapageDb"; const storeName = "versions"; const openDbRequest = indexedDB.open(dbName, 1); openDbRequest.onsuccess = function() { db = openDbRequest.result; console.log("open success"); }; openDbRequest.onerror = function(event) { console.log(event); }; openDbRequest.onupgradeneeded = function() { console.log("upgrading"); db = null; var store = openDbRequest.result.createObjectStore(storeName, { keyPath: "k" }); store.transaction.oncomplete = function() { db = store.transaction.db; console.log("upgrade complete"); }; }; function getItem(key, callback) { console.log("get", key); if (!db) { setTimeout(function () { getItem(key, callback); }, 100); return; } db.transaction(storeName).objectStore(storeName).get(key).onsuccess = function(event) { var result = (event.target.result && event.target.result.v) || null; callback(result); }; } const keyValue = {k: "", v: ""}; function setItem(key, value) { console.log("set", value); if (!db) { setTimeout(function () { setItem(key, value); }, 100); return; } keyValue.k = key; keyValue.v = value; db.transaction(storeName, 'readwrite').objectStore(storeName).put(keyValue); }