[英]Single data store offline locally for both a web site and an extension in Chrome?
嗨,我目前正在开发一个网站和一个Chrome扩展程序。
当前,它们每个都在本地离线维护一系列对象。 该网站使用localStorage ,而扩展使用chrome.storage 。
现在,我想在2个数组之间进行同步。 它带有一些解决方案:
1)在服务器上建立一个端点来获取/发布数组
2)编写代码以在2个数组之间进行同步,即,每次更改1个数组时,我们会将更改填充到其他数组中,反之亦然。
3)仅在本地离线存储该阵列的单个实例。
=>我正在尝试实施此解决方案。
因此,是否有任何方法可以在本地离线存储对象,并且可以在网站和Chrome扩展程序之间共享该对象?
如果将内容脚本与本地存储一起使用,则会出现问题:
当前用例:
好吧,我想我找到了以下解决方案。 使用跨存储库
它由一个中心和许多客户组成:
集线器:充当服务器,实际上与localStorage API交互
客户:创建一个iframe以将文件加载到集线器上并发布消息以访问集线器中的数据(获取,设置,删除)
样例代码:
Hub
// Config s.t. subdomains can get, but only the root domain can set and del
CrossStorageHub.init([
{origin: /\.example.com$/, allow: ['get']},
{origin: /:\/\/(www\.)?example.com$/, allow: ['get', 'set', 'del']}
]);
请注意,$用于匹配字符串的结尾。 上例中的RegExps将匹配源,例如valid.example.com,但不会匹配invalid.example.com.malicious.com。
Client
var storage = new CrossStorageClient('https://store.example.com/hub.html');
storage.onConnect().then(function() {
return storage.set('newKey', 'foobar');
}).then(function() {
return storage.get('existingKey', 'newKey');
}).then(function(res) {
console.log(res.length); // 2
}).catch(function(err) {
// Handle error
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.