IDBOpenDBRequest
Базовая Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2021 года.
Примечание: Эта функция доступна в Web Workers.
Интерфейс IDBOpenDBRequest API IndexedDB предоставляет доступ к результатам запросов на открытие или удаление баз данных (выполняемых с помощью IDBFactory.open и IDBFactory.deleteDatabase), используя определённые атрибуты обработчиков событий.
Свойства экземпляра
Также наследует свойства от своих родительских интерфейсов IDBRequest и EventTarget.
Методы экземпляра
Нет методов, но наследует методы от своих родительских интерфейсов IDBRequest и EventTarget.
События
События, определённые в родительских интерфейсах IDBRequest и EventTarget, также могут быть активированы на объектах IDBOpenDBRequest.
Привязывайтесь к этим общим и специфичным событиям, используя addEventListener() или назначив обработчик событий свойству oneventname этого интерфейса.
События, специфичные для этого интерфейса:
blocked-
Срабатывает, когда открытое подключение к базе данных блокирует транзакцию
versionchangeв той же базе данных. Также доступно через свойствоonblocked. upgradeneeded-
Срабатывает, когда была предпринята попытка открыть базу данных с номером версии, большим, чем текущая версия. Также доступно через свойство
onupgradeneeded.
Пример
В следующем примере показано использование обработчика onupgradeneeded для обновления структуры базы данных, если загружается база данных с более высокой версией. Для полного рабочего примера см. наше приложение To-do Notifications (посмотреть пример в работе.)
let db;
// Let us open our database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
// these event handlers act on the database being opened.
DBOpenRequest.onerror = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Error loading database.";
};
DBOpenRequest.onsuccess = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Database initialized.";
// store the result of opening the database in the db
// variable. This is used a lot below
db = DBOpenRequest.result;
// Run the displayData() function to populate the task
// list with all the to-do list data already in the IDB
displayData();
};
// This event handles the event whereby a new version of
// the database needs to be created Either one has not
// been created before, or a new version number has been
// submitted via the window.indexedDB.open line above
// it is only implemented in recent browsers
DBOpenRequest.onupgradeneeded = (event) => {
const db = event.target.result;
db.onerror = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Error loading database.";
};
// Create an objectStore for this database
const objectStore = db.createObjectStore("toDoList", {
keyPath: "taskTitle",
});
// define what data items the objectStore will contain
objectStore.createIndex("hours", "hours", { unique: false });
objectStore.createIndex("minutes", "minutes", { unique: false });
objectStore.createIndex("day", "day", { unique: false });
objectStore.createIndex("month", "month", { unique: false });
objectStore.createIndex("year", "year", { unique: false });
objectStore.createIndex("notified", "notified", { unique: false });
};
Спецификации
| Спецификация |
|---|
| Indexed Database API 3.0 # idbopendbrequest |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
IDBOpenDBRequest |
2423–57 | 12 | 1610–16 | 15 | 8 | 2525–57 | 22 | 14 | 8 | 1.51.5–7.0 | 4.4≤37–57 |
blocked_event |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
upgradeneeded_event |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
worker_support |
23 | 12 | 37 | 15 | 10 | 25 | 37 | 14 | 10 | 1.5 | 4.4 |
См. также
- Использование IndexedDB
- Инициализация транзакций:
IDBDatabase - Использование транзакций:
IDBTransaction - Установление диапазона ключей:
IDBKeyRange - Получение и изменение данных:
IDBObjectStore - Использование курсоров:
IDBCursor - Пример: To-do Notifications (посмотреть пример в работе).
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest