DOM

インターフェイス

IDBOpenDBRequest インターフェイス

  編集:2022.04.06 by T.A.

MS(en-US)

IndexedDB API の IDBOpenDBRequest インターフェイスは、特定のイベントハンドラー属性を使用して、データベースを開くまたは削除する要求の結果へのアクセスを提供します(IDBFactory.open および IDBFactory.deleteDatabase を使用して実行されます)。

注:この機能は Web Workers で使用できます。

プロパティ

また、親 IDBRequest および EventTarget からメソッドを継承します。

メソッド

メソッドなし、ただし、親 IDBRequest および EventTarget からメソッドを継承します。

イベント

親インターフェースで定義されたイベント、IDBRequest および EventTargetIDBOpenDBRequest オブジェクトにディスパッチすることもできます。

addEventListener() を使用するか、このインターフェイスの oneventname プロパティにイベントリスナーを割り当てることにより、これらの一般的で特定のイベントをリッスンします。

このインターフェイスに固有のイベントは次のとおりです:

blocked
データベースへの開いている接続が同じデータベースのバージョン変更トランザクションをブロックしているときに発生します。onblocked プロパティからも利用できます。
upgradeneeded
現在のバージョンよりも高いバージョン番号のデータベースを開こうとしたときに発生します。onupgradeneeded プロパティからも利用できます。
次の例では、バージョン番号の大きいデータベースがロードされた場合に、onupgradeneeded ハンドラーを使用してデータベース構造を更新していることがわかります。完全に機能する例については、To-Do通知アプリを参照してください(例をライブで表示)。
var db;

// Let us open our database
var DBOpenRequest = window.indexedDB.open("toDoList", 4);

// these event handlers act on the database being opened.
DBOpenRequest.onerror = function(event) {
  note.innerHTML += '<li>Error loading database.</li>';
};

DBOpenRequest.onsuccess = function(event) {
  note.innerHTML += '<li>Database initialized.</li>';

  // 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 = function(event) {
  var db = this.result;

  db.onerror = function(event) {
    note.innerHTML += '<li>Error loading database.</li>';
  };

  // Create an objectStore for this database
  var 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 });
};

テスト
HTML:

ここに表示
スクリプト組み込み:



スクリプト:


スクリプト:



表示内容:
表示内容: