Не удается открыть IndexedDB в firefox


Я получаю следующую ошибку, когда пытаюсь открыть indexeddb из моего расширения firefox

[исключение... "Недопустимое значение" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" расположение: "Яш каркас :: хром://расширения/Азбука.html:: openDb:: строка 213 " data: no]

const DB_NAME = 'dbName';
const DB_VERSION = 1; 
const DB_STORE_NAME = 'dbStore';

var db;

 function openDb() {
  try{
    var req = indexedDB.open(DB_NAME, DB_VERSION);
  req.onsuccess = function (evt) {
    db = this.result;
  };
  req.onerror = function (evt) {
   console.error("openDb:", evt.target.errorCode);
  };

  req.onblocked = function(evt) {
  // If some other tab is loaded with the database, then it needs to be closed
  // before we can proceed.
  console.log("Please close all other tabs with this site open!");
  alert("Please close all other tabs with this site open!");
  };
 }
catch(err){
    alert(err);
}
 }

Он переходит к части catch с приведенной выше ошибкой.

Заранее благодарю.

2 3

2 ответа:

Следующее должно дать Рабочий indexedDB

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

Я проверял только в том случае, если open возвращает допустимый объект IDBDatabase. Пожалуйста, подтвердите хранение и извлечение данных.

(это просто обходной путь, indexedDB Метод доступа глючит)

Edit: диалоги Chrome имеют Рабочий indexedDB

Обновление на основе групповой отладки вполне вероятно, что вы тестируете свой IDB-код в среде Firefox без окон. Поскольку IDB зависит от окна для создания его изолированной среды безопасности, вы не можете запустить IDB в такой среде.

Интересно, что я могу воспроизвести Firefox "TypeError: indexedDB is null" @ Christoph упоминает при использовании JSFiddle как для префиксных, так и для нефиксных indexedDB интерфейсов.

Тот же код, воспроизведенный ниже, прекрасно работает в Хром. И, как ни странно, прекрасно работает в FF при выполнении непосредственно с консоли

var DB_NAME = 'dbName';
var DB_VERSION = 1;
var DB_STORE_NAME = 'dbStore';

var db;
try {
    var req = self.indexedDB.open(DB_NAME, DB_VERSION);
    req.onsuccess = function (evt) {
        db = this.result;
        console.log('success', evt.target.result);
    };
    req.onerror = function (evt) {
        console.error("error", evt);
    };
    req.onblocked = function (evt) {
        console.log('blocked', evt);
    };
} catch (err) {
    console.error(err.name, err.message);
}

Введите описание изображения здесь

Попробуйте запустить код в консоли FF и посмотрите, сможете ли вы подтвердить. А пока мне любопытно, в какой среде вы видите эту ошибку?