Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用.crx将预定义数据发送到浏览器本地存储_Javascript_Html_Google Chrome_Google Chrome Extension_Local Database - Fatal编程技术网

Javascript 使用.crx将预定义数据发送到浏览器本地存储

Javascript 使用.crx将预定义数据发送到浏览器本地存储,javascript,html,google-chrome,google-chrome-extension,local-database,Javascript,Html,Google Chrome,Google Chrome Extension,Local Database,我正在构建我的第一个chrome扩展,为此我希望在客户端浏览器中有一些预定义的数据 我希望数据能够由用户通过扩展编辑,并保存回更改 我首先想到使用HTML5本地数据库或索引数据库API(我做得对吗?) 但我不知道如何将本地数据库发送到.crx中的客户端,因为数据库将使用浏览器而不是扩展 如何通过.crx将数据发送到客户端浏览器并将数据保存在浏览器上? (我知道在浏览器上保存数据是不对的,但如果将数据与扩展名一起保存,则无法将数据保存回去) 我还可以用什么方法来实现需求 如果我想使用索引数据库AP

我正在构建我的第一个chrome扩展,为此我希望在客户端浏览器中有一些预定义的数据

我希望数据能够由用户通过扩展编辑,并保存回更改

我首先想到使用HTML5
本地数据库
索引数据库API
(我做得对吗?)

但我不知道如何将本地数据库发送到
.crx
中的客户端,因为数据库将使用浏览器而不是扩展

如何通过.crx将数据发送到客户端浏览器并将数据保存在浏览器上? (我知道在浏览器上保存数据是不对的,但如果将数据与扩展名一起保存,则无法将数据保存回去)

我还可以用什么方法来实现需求

如果我想使用
索引数据库API
,是否可以使用相同的方法


我的数据不是简单的键值对,而是表类型的数据。

我没有数据访问部分的任何代码,因为我想在继续之前确定

否,您不能将数据库文件与ctx文件一起发送。简单地说,您无法在客户端替换它。 实际上你有两个选择:

1) 将预定义数据保存到扩展名中(在任何扩展名文件中。将整个查询或数据保存为JSON),并在首次运行后将这些查询执行到本地数据库

2) 创建web服务,从中获取预定义数据并将其保存到本地数据库

例如(data.json):

在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
}

您能确定脱机字典()是如何实现的吗?它们的扩展名大约为8MB,包含二进制文件中的定义数据。它不使用本地数据库或本地存储。它使用本地文件系统和二进制搜索加载结果。
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
}