Spec-Zone.ru › Web APIs

IDBOpenDBRequest

Базовая Широко доступная

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2021 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Web Workers.

Интерфейс IDBOpenDBRequest API IndexedDB предоставляет доступ к результатам запросов на открытие или удаление баз данных (выполняемых с помощью IDBFactory.open и IDBFactory.deleteDatabase), используя определённые атрибуты обработчиков событий.

EventTarget IDBRequest IDBOpenDBRequest

Свойства экземпляра

Также наследует свойства от своих родительских интерфейсов 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API