Test openCursor/openKeyCursor with raw IDBKeys. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". dbname = "opencursor-key.html" indexedDB.deleteDatabase(dbname) indexedDB.open(dbname) objectStore = db.createObjectStore(objectStoreName); First, add all our data to the object store. request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); Now create the indexes. objectStore.createIndex(indexData[i].name, indexData[i].keyPath, indexData[i].options); objectStore.createIndex(indexData[i].name, indexData[i].keyPath, indexData[i].options); objectStore.createIndex(indexData[i].name, indexData[i].keyPath, indexData[i].options); testObjectStore() trans = db.transaction(objectStoreName, 'readwrite') objectStore = trans.objectStore(objectStoreName) request = objectStore.openCursor('237-23-7739') PASS cursor.key is "237-23-7739" PASS JSON.stringify(cursor.value) is JSON.stringify(objectStoreData[7].value) PASS cursor.primaryKey is cursor.key cursor.continue() PASS cursor is null trans = db.transaction(objectStoreName, 'readwrite') objectStore = trans.objectStore(objectStoreName) index = objectStore.index('weight') request = index.openCursor(180) PASS cursor.key is 180 PASS JSON.stringify(cursor.value) is JSON.stringify(objectStoreData[2].value) PASS cursor.primaryKey is "237-23-7734" cursor.continue() PASS cursor.key is 180 PASS JSON.stringify(cursor.value) is JSON.stringify(objectStoreData[6].value) PASS cursor.primaryKey is "237-23-7738" cursor.continue() PASS cursor.key is 180 PASS JSON.stringify(cursor.value) is JSON.stringify(objectStoreData[10].value) PASS cursor.primaryKey is "237-23-7742" cursor.continue() PASS cursor is null trans = db.transaction(objectStoreName, 'readwrite') objectStore = trans.objectStore(objectStoreName) index = objectStore.index('weight') request = index.openKeyCursor(180) PASS cursor.key is 180 PASS cursor.primaryKey is "237-23-7734" cursor.continue() PASS cursor.key is 180 PASS cursor.primaryKey is "237-23-7738" cursor.continue() PASS cursor.key is 180 PASS cursor.primaryKey is "237-23-7742" cursor.continue() PASS cursor is null PASS successfullyParsed is true TEST COMPLETE