отправить предопределенные данные в локальное хранилище браузера с помощью .crx - PullRequest
0 голосов
/ 29 декабря 2011

Я создаю свое первое расширение Chrome, для этого я хочу иметь некоторые предопределенные данные в клиентском браузере.

Я хочу, чтобы данные могли редактироваться пользователем посредством расширения и сохранять изменения обратно.

Сначала я подумал об использовании HTML5 local database или Indexed Database API для этого. (Я делаю правильно?)

Но я не знаю, как я могу отправить эту локальную базу данных клиенту в .crx .. потому что база данных будет с браузером, а не с расширением.

Как я могу отправить данные в браузер на стороне клиента по .crx и сохранить данные в браузере? (Я знаю, что неправильно сохранять данные в браузере, но я не могу сохранить данные обратно, если я сохраняю данные вместе с расширением)

Какой еще способ я могу использовать для выполнения требования?

Могу ли я использовать тот же метод, если я хочу использовать Indexed Database API вместо?


Мои данные - не простая пара ключ-значение, а табличный вид данных.
У меня нет кода для части доступа к данным, потому что я хочу быть уверен, прежде чем я смогу продолжить

1 Ответ

1 голос
/ 05 января 2012

Нет, вы не можете отправить файл базы данных с файлом ctx. Просто Вы не можете заменить его на стороне клиента. На самом деле у вас есть два варианта:

1) сохранить предопределенные данные в ваше расширение (в любом файле расширения. Сохранить весь запрос или данные в формате JSON) и после первого запуска выполнить эти запросы в локальной базе данных.

2) создайте веб-сервис, откуда вы получите предварительно определенные данные, и сохраните их в локальной БД.

Например (data.json):

[{"name":"name", "desc":"desc","some_column":"some value"},{"name":"name", "desc":"desc","some_column":"some value"}, ...]

В background.html:

var xhr = new XMLHttpRequest();
xhr.open('GET', chrome.extension.getURL('data.json'), false);
var dataStr = xhr.send(); //don't do this way. use asynch api :)
var data = JSON.parse(dataStr);
//connect to local database
for(var _item in data){
    //create query to insert data into DB
    //and exequte query
}
...