Единственная проблема в том, что для indexedDB
вам нужно окно, кроме того, что оно не так уж и особенное при использовании его из надстройки.Классические надстройки обычно имеют окно, которое они могут использовать, однако надстройки, созданные с помощью SDK надстройки, выполняются в контексте без окон.Поэтому, если вы используете SDK, вы используете внутренний пакет window-utils
:
var window = require("window-utils").activeWindow;
var indexedDB = (window.indexedDB || window.mozIndexedDB);
var request = indexedDB.open("MyExtensionDB");
Обратите внимание, что все расширения используют одно и то же пространство имен (chrome://
), что и IndexedDB.Поэтому вы должны выбрать имя базы данных таким образом, чтобы оно не совпадало с именами, которые могут выбрать другие расширения.
Начиная с Firefox 12, требование иметь окно отменено.nsIIndexedDatabaseManager.initWindowless()
может использоваться для ввода свойства mozIndexedDB
в любой объект.Соответствующая ошибка: ошибка 587797 .