IndexedDB:复制到不同的域?

时间:2016-10-02 18:54:34

标签: google-chrome indexeddb

我正在切换域,并希望为我的用户提供在我的新域上继续使用相同IndexedDB的选项。

我想,由于同源策略,JavaScript无法实现这一点。但是,我的用户是技术熟练的"并且都使用Chrome。

那么我的用户可以手动将IndexedDB从一个域移动到另一个域吗?也许在Chrome用户目录中有一些文件复制操作?

2 个答案:

答案 0 :(得分:4)

您可以使用iframe和postMessage()来传输数据。让新域打开旧域的iframe并设置message事件侦听器。让旧域提供一个页面,该页面在打开时会对数据库进行爬网并对父窗口执行postMessage() - 指定 targetOrigin 参数以将其限制为正确的新域。您需要为批处理和信令完成创建适当的消息方案。

(在Chrome中,索引数据库的后备存储包含数据本身的原点,因此您无法简单地移动文件。)

答案 1 :(得分:0)

选项1 导出/导入

objectstore.getall()  //and done on each store. 

将数据添加到新网站的一些交易。

//a few createobjectstore()    
for(var i in myobject.length){
    objecstore.add(myobject[i]
}

选项2 如果镀铬并使用镀铬扩展。我没有在我面前的页面,但如果您知道您的分机的ID和另一个分机,您可以跨站点

我想说chrome.runtime.message()用于在扩展名的反页和其他扩展页面之间进行交谈,同时需要与其他网站进行通信。