{{APIRef("IndexedDB")}}{{ SeeCompatTable() }}
The IDBLocaleAwareKeyRange
interface of the IndexedDB API is a Firefox-specific version of {{domxref("IDBKeyRange")}} — it functions in exactly the same fashion, and has the same properties and methods, but it is intended for use with {{domxref("IDBIndex")}} objects when the original index had a locale
value specified upon its creation (see createIndex()
's optionalParameters) — that is, it has locale aware sorting enabled.
Methods
This interface inherits all the methods of its parent interface, {{domxref("IDBKeyRange")}}.
Properties
This interface inherits all the properties of its parent interface, {{domxref("IDBKeyRange")}}.
Bear in mind however that IDBLocaleAwareKeyRange
has its own implementation of {{domxref("IDBKeyRange.bound")}}. This is because when you use bound()
, it checks if lower bound < upper bound, and throws an exception if that’s not the case. With locale-aware indexes, the meaning of < depends on the locale, so for example in Lithuanian Y is sorted between I and K. The only difference between IDBKeyRange
and IDBLocaleAwareKeyRange
is that the latter doesn’t do the aforementioned check.
Developers should always use IDBLocaleAwareKeyRange
when dealing with locale-aware indexes.
Examples
function displayData() { var keyRangeValue = IDBLocaleAwareKeyRange.bound("A", "F"); var transaction = db.transaction(['fThings'], 'readonly'); var objectStore = transaction.objectStore('fThings'); var myIndex = objectStore.index('lName'); myIndex.openCursor(keyRangeValue).onsuccess = function(event) { var cursor = event.target.result; if(cursor) { var tableRow = document.createElement('tr'); tableRow.innerHTML = '<td>' + cursor.value.id + '</td>' + '<td>' + cursor.value.lName + '</td>' + '<td>' + cursor.value.fName + '</td>' + '<td>' + cursor.value.jTitle + '</td>' + '<td>' + cursor.value.company + '</td>' + '<td>' + cursor.value.eMail + '</td>' + '<td>' + cursor.value.phone + '</td>' + '<td>' + cursor.value.age + '</td>'; tableEntry.appendChild(tableRow); cursor.continue(); } else { console.log('Entries all displayed.'); } }; };
Specifications
Not currently part of any specification.
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | {{CompatNo}} | {{CompatGeckoDesktop("43.0")}}[1] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
Feature | Android | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | {{CompatNo}} | {{CompatGeckoMobile("43.0")}}[1] | 2.5[1] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
[1]: This feature is currently hidden behind a flag — to enable it and experiment, go to about:config and enable dom.indexedDB.experimental
.
See also
- Using IndexedDB
- Starting transactions: {{domxref("IDBDatabase")}}
- Using transactions: {{domxref("IDBTransaction")}}
- Setting a range of keys: {{domxref("IDBKeyRange")}}
- Retrieving and making changes to your data: {{domxref("IDBObjectStore")}}
- Using cursors: {{domxref("IDBCursor")}}
- Reference example: To-do Notifications (view example live.)