chrome(ブラウザー内部) で IndexedDB を使う

IndexedDB API は、通常、コンテンツ JavaScript からユーザーのブラウザーにデータを格納するために使用されます(概要については IndexedDB の使用を参照してください) 。ただし、この API には、システム特権の JavaScript から、Components.utils.importGlobalProperties() 関数を使用してアクセスすることもできます:

Components.utils.importGlobalProperties(["indexedDB"]);

// ここからは、コンテンツから IndexedDB を使うのと同様
var req = indexedDB.open("my-database");
// ...

サンドボックスを作成していて、その中で indexedDB を使用できるようにするには、Sandbox コンストラクタで wantGlobalProperties オプションを使用します:

var options = {
  "wantGlobalProperties": ["indexedDB"]           
}
var principal = Cc["@mozilla.org/systemprincipal;1"].createInstance(Ci.nsIPrincipal);
var sandbox = Components.utils.Sandbox(principal, options);

// サンドボックスから indexedDB にアクセスできるようになる
var sandboxScript = 'var req = indexedDB.open("my-database");';
Components.utils.evalInSandbox(sandboxScript, sandbox);

Firefox 33以前では、nsIIndexedDatabaseManager サービスの initWindowless メソッドを使用して chrome コードから indexedDB にアクセスしました。このメソッドは Firefox 33 で削除されました。

訳注: ここでの chrome コードとは、Google chrome ではなく、chrome特権付きのコードを指しています

ドキュメントのタグと貢献者

このページの貢献者: Uemmra3, u_7cc, albatrosary
最終更新者: Uemmra3,