0

我正在构建我的第一个chrome扩展,因为我希望在客户端浏览器中有一些预定义的数据。使用.crx发送预定义的数据到浏览器本地存储

我希望用户可以通过扩展来编辑数据,并保存更改。

我首先想到使用HTML5 local databaseIndexed Database API这个的。(我这样做对吗?)

但我不知道我怎么能在这.crx本地数据库发送给客户所..because数据库将使用浏览器而不是扩展名。

如何通过.crx将数据发送到客户端浏览器并将数据保存在浏览器中? (我知道这不好,以节省浏览器数据,但我无法保存数据回来,如果我保存的数据与扩展一起)

还有什么其他办法,我可以用它来实现这个需求?

如果我想用Indexed Database API代替,我可以使用相同的方法吗?


我的数据不是简单的键值对,而是表类型的数据。
我没有任何数据访问部分的代码,因为我想确保在我可以继续之前

回答

1

不,您不能使用ctx文件发送数据库文件。只是你不能在客户端更换它。 其实你有两个选择:

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

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

例如(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 
} 
+0

可以请你确定如何离线词典(https://chrome.google.com/webstore/ detail/mplnjjdpheipggojikpifkibnoaakkii)是否实现? – dotNETbeginner 2012-01-05 11:34:03

+0

它们的扩展大小约为8 MB,包含二进制文件中的定义数据。它不使用本地数据库或本地存储。它使用本地文件系统和二进制搜索来加载结果。 – 2012-01-05 12:53:32

相关问题