2013-03-29 3 views
2

Я хотел бы разработать приложение, которое использует браузер для взаимодействия с пользователем. Приложение должно быть доступно в автономном режиме и распространяться через zip.IndexedDB над локальным файлом HTML

Функции, которые я хотел бы выполнить, должны обрабатываться с помощью HTML, CSS, JS, и я хотел бы использовать функциональность IndexedDB.

Я столкнулся с проблемой с IndexedDB (Chrome) тем, что тот же код работает в онлайн-пространстве, но не из локального расположения жесткого диска (файл: //).

Обратитесь к примеру: http://jsfiddle.net/FwuUD/

(function() { 

    var db; 
    var dbreq = indexedDB.open("TestApp", 2); 

    dbreq.onsuccess = function(e) { 
     alert("Database created"); 
     db = e.target.result; 

     var employeeStore = db.createObjectStore (
      "employees", 
      {keyPath: "id"} 
     ); 

    }; 

    dbreq.onerror = function(e) { 
     alert("Database Error: " + e.target.errorCode); 
    }; 

    dbreq.onupgradeneeded = function(e) { 
     alert("Database upgrade needed"); 
    }; 

})(); 

Любые предложения?

+0

Это нормально для меня в обоих случаях, но мне пришлось переместить 'createObjectStore' в' onupgradeneeded' –

+0

Если у вас есть python: «python -m http.server» запускает веб-сервер на порту 8000 в локальном каталоге , – 79E09796

ответ

1

Индексированный интерфейс API работает только в веб-сервере. Когда вы переходите к нему с помощью файловой системы, это не сработает. ИндексированномуDB API требуется контекст домена для работы, и файловая система не предоставляет этого. Короче вам нужен url для использования api.

+0

большое спасибо за вашу помощь, есть ли у вас какие-либо предложения о том, как я могу использовать эту функциональность в приложении на стороне клиента? –

+0

Это должно означать, что на каждом устройстве, которое вы хотите скопировать, должен быть запущен веб-сервер. Также файлы должны быть скопированы в папку этого веб-сервера, чтобы он был доступен через URL-адрес loopback (http://127.0.0.1). –

2

IndexedDB отключен при запуске из файла: /// для обеспечения безопасности. Неясно, управляете ли вы параметрами браузера. Если вы это сделаете, вы можете передать файлы -allow-file-access-from-files, которые позволят IndexedDB работать из файла: /// origin.

Смежные вопросы