Test IndexedDB cursor.advance(). On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". dbname = "cursor-advance.html" indexedDB.deleteDatabase(dbname) indexedDB.open(dbname) prepareDatabase(): objectStore = db.createObjectStore(objectStoreName); 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); trans = db.transaction(objectStoreName, 'readwrite') objectStore = trans.objectStore(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); testSimple() trans = db.transaction(objectStoreName) store = trans.objectStore(objectStoreName) request = store.openCursor() cursor.advance(1) PASS expected is "{\"key\":\"237-23-7733\",\"value\":{\"name\":\"Ann\",\"height\":52,\"weight\":110},\"primaryKey\":\"237-23-7733\"}" testContinueThenAdvance() trans = db.transaction(objectStoreName) store = trans.objectStore(objectStoreName) request = store.openCursor() cursor.continue(); cursor.continue(); cursor.continue(); cursor.advance(1) PASS expected is "{\"key\":\"237-23-7736\",\"value\":{\"name\":\"Joe\",\"height\":65,\"weight\":150},\"primaryKey\":\"237-23-7736\"}" testAdvanceMultiple() trans = db.transaction(objectStoreName) store = trans.objectStore(objectStoreName) request = store.openCursor() cursor.advance(3) PASS expected is "{\"key\":\"237-23-7735\",\"value\":{\"name\":\"Sue\",\"height\":58,\"weight\":130},\"primaryKey\":\"237-23-7735\"}" testAdvanceIndex() trans = db.transaction(objectStoreName) store = trans.objectStore(objectStoreName) request = store.openCursor() cursor.advance(3) PASS expected is "{\"key\":\"Jef\",\"value\":{\"name\":\"Jef\",\"height\":65,\"weight\":120},\"primaryKey\":\"237-23-7739\"}" testAdvanceIndexNoDupe() trans = db.transaction(objectStoreName) store = trans.objectStore(objectStoreName) request = store.openCursor(null, 'nextunique') cursor.advance(3) PASS expected is "{\"key\":130,\"value\":{\"name\":\"Sue\",\"height\":58,\"weight\":130},\"primaryKey\":\"237-23-7735\"}" testAdvanceIndexPrev() trans = db.transaction(objectStoreName) store = trans.objectStore(objectStoreName) request = store.openCursor(null, 'prev') cursor.advance(3) PASS expected is "{\"key\":150,\"value\":{\"name\":\"Joe\",\"height\":65,\"weight\":150},\"primaryKey\":\"237-23-7736\"}" testAdvanceIndexPrevNoDupe() trans = db.transaction(objectStoreName) store = trans.objectStore(objectStoreName) request = store.openCursor(null, 'prevunique') cursor.advance(3) PASS expected is "{\"key\":120,\"value\":{\"name\":\"Bob\",\"height\":60,\"weight\":120},\"primaryKey\":\"237-23-7732\"}" testAdvanceToEnd() trans = db.transaction(objectStoreName) store = trans.objectStore(objectStoreName) request = store.openCursor() cursor.advance(100) PASS expected is "null" testPrefetchInRange() trans = db.transaction(objectStoreName) objectStore = trans.objectStore(objectStoreName) request = objectStore.openCursor() prefetch(): PASS expected is "{\"key\":\"237-23-7732\",\"value\":{\"name\":\"Bob\",\"height\":60,\"weight\":120},\"primaryKey\":\"237-23-7732\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7733\",\"value\":{\"name\":\"Ann\",\"height\":52,\"weight\":110},\"primaryKey\":\"237-23-7733\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7734\",\"value\":{\"name\":\"Ron\",\"height\":73,\"weight\":180},\"primaryKey\":\"237-23-7734\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7735\",\"value\":{\"name\":\"Sue\",\"height\":58,\"weight\":130},\"primaryKey\":\"237-23-7735\"}" cursor.advance(2) prefetch(): PASS expected is "{\"key\":\"237-23-7737\",\"value\":{\"name\":\"Pat\",\"height\":65,\"weight\":100},\"primaryKey\":\"237-23-7737\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7738\",\"value\":{\"name\":\"Leo\",\"height\":65,\"weight\":180},\"primaryKey\":\"237-23-7738\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7739\",\"value\":{\"name\":\"Jef\",\"height\":65,\"weight\":120},\"primaryKey\":\"237-23-7739\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7740\",\"value\":{\"name\":\"Sam\",\"height\":71,\"weight\":110},\"primaryKey\":\"237-23-7740\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7741\",\"value\":{\"name\":\"Bug\",\"height\":63,\"weight\":100},\"primaryKey\":\"237-23-7741\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7742\",\"value\":{\"name\":\"Tub\",\"height\":69,\"weight\":180},\"primaryKey\":\"237-23-7742\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7743\",\"value\":{\"name\":\"Rug\",\"height\":77,\"weight\":120},\"primaryKey\":\"237-23-7743\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7744\",\"value\":{\"name\":\"Pug\",\"height\":66,\"weight\":110},\"primaryKey\":\"237-23-7744\"}" cursor.continue() prefetch(): testPrefetchOutOfRange() trans = db.transaction(objectStoreName) objectStore = trans.objectStore(objectStoreName) request = objectStore.openCursor() prefetch(): PASS expected is "{\"key\":\"237-23-7732\",\"value\":{\"name\":\"Bob\",\"height\":60,\"weight\":120},\"primaryKey\":\"237-23-7732\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7733\",\"value\":{\"name\":\"Ann\",\"height\":52,\"weight\":110},\"primaryKey\":\"237-23-7733\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7734\",\"value\":{\"name\":\"Ron\",\"height\":73,\"weight\":180},\"primaryKey\":\"237-23-7734\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7735\",\"value\":{\"name\":\"Sue\",\"height\":58,\"weight\":130},\"primaryKey\":\"237-23-7735\"}" cursor.advance(7) prefetch(): PASS expected is "{\"key\":\"237-23-7742\",\"value\":{\"name\":\"Tub\",\"height\":69,\"weight\":180},\"primaryKey\":\"237-23-7742\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7743\",\"value\":{\"name\":\"Rug\",\"height\":77,\"weight\":120},\"primaryKey\":\"237-23-7743\"}" cursor.continue() prefetch(): PASS expected is "{\"key\":\"237-23-7744\",\"value\":{\"name\":\"Pug\",\"height\":66,\"weight\":110},\"primaryKey\":\"237-23-7744\"}" cursor.continue() prefetch(): testBadAdvance() trans = db.transaction(objectStoreName, 'readwrite') objectStore = trans.objectStore(objectStoreName) request = objectStore.openCursor() advanceBadly(): Expecting TypeError exception from cursor.advance(0) PASS Exception was thrown. PASS cursor.advance(0) threw TypeError: Failed to execute 'advance' on 'IDBCursor': A count argument with value 0 (zero) was supplied, must be greater than 0. Expecting TypeError exception from cursor.advance(-1) PASS Exception was thrown. PASS cursor.advance(-1) threw TypeError: Failed to execute 'advance' on 'IDBCursor': Value is outside the 'unsigned long' value range. Expecting TypeError exception from cursor.advance(0x100000000) PASS Exception was thrown. PASS cursor.advance(0x100000000) threw TypeError: Failed to execute 'advance' on 'IDBCursor': Value is outside the 'unsigned long' value range. Expecting TypeError exception from cursor.advance(0x20000000000000) PASS Exception was thrown. PASS cursor.advance(0x20000000000000) threw TypeError: Failed to execute 'advance' on 'IDBCursor': Value is outside the 'unsigned long' value range. testEdges(): trans = db.transaction(objectStoreName, 'readonly') objectStore = trans.objectStore(objectStoreName) request = objectStore.openCursor() onSuccess(): cursor = event.target.result PASS cursor is non-null. cursor.advance(0xffffffff) onSuccess(): cursor = event.target.result PASS cursor is null testDelete() trans = db.transaction(objectStoreName, 'readwrite') objectStore = trans.objectStore(objectStoreName) request = objectStore.openCursor() deleteSecond(): PASS expected is "{\"key\":\"237-23-7732\",\"value\":{\"name\":\"Bob\",\"height\":60,\"weight\":120},\"primaryKey\":\"237-23-7732\"}" cursor.advance(1) deleteSecond(): PASS expected is "{\"key\":\"237-23-7733\",\"value\":{\"name\":\"Ann\",\"height\":52,\"weight\":110},\"primaryKey\":\"237-23-7733\"}" cursor.advance(1) deleteSecond(): PASS expected is "{\"key\":\"237-23-7734\",\"value\":{\"name\":\"Ron\",\"height\":73,\"weight\":180},\"primaryKey\":\"237-23-7734\"}" cursor.delete() deleteSecond(): PASS expected is "{\"key\":\"237-23-7738\",\"value\":{\"name\":\"Leo\",\"height\":65,\"weight\":180},\"primaryKey\":\"237-23-7738\"}" cursor.advance(1) deleteSecond(): PASS expected is "{\"key\":\"237-23-7739\",\"value\":{\"name\":\"Jef\",\"height\":65,\"weight\":120},\"primaryKey\":\"237-23-7739\"}" cursor.advance(1) deleteSecond(): PASS expected is "{\"key\":\"237-23-7740\",\"value\":{\"name\":\"Sam\",\"height\":71,\"weight\":110},\"primaryKey\":\"237-23-7740\"}" cursor.advance(1) deleteSecond(): PASS expected is "{\"key\":\"237-23-7741\",\"value\":{\"name\":\"Bug\",\"height\":63,\"weight\":100},\"primaryKey\":\"237-23-7741\"}" cursor.advance(1) deleteSecond(): PASS expected is "{\"key\":\"237-23-7742\",\"value\":{\"name\":\"Tub\",\"height\":69,\"weight\":180},\"primaryKey\":\"237-23-7742\"}" cursor.advance(1) deleteSecond(): PASS expected is "{\"key\":\"237-23-7743\",\"value\":{\"name\":\"Rug\",\"height\":77,\"weight\":120},\"primaryKey\":\"237-23-7743\"}" cursor.advance(1) deleteSecond(): PASS expected is "{\"key\":\"237-23-7744\",\"value\":{\"name\":\"Pug\",\"height\":66,\"weight\":110},\"primaryKey\":\"237-23-7744\"}" cursor.advance(1) deleteSecond(): PASS successfullyParsed is true TEST COMPLETE