IndexedDB:复制到不同的域?

IndexedDB: Copy to different domain?

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

我想,由于同源政策,这在 JavaScript 是不可能的。但是,我的用户是 "technical proficient" 并且都使用 Chrome.

我的用户是否可以手动将 IndexedDB 从一个域移动到另一个域?也许在 Chrome 用户目录中进行了一些文件复制操作?

您可以使用 iframe 和 postMessage() 来传输数据。让新域打开旧域的 iframe 并设置 message 事件侦听器。让旧域提供一个页面,该页面在打开时抓取数据库并对父域 window 执行 postMessage() - 指定 targetOrigin 参数以将此限制为正确的新域。您需要为批处理和信号完成发明一个合适的消息方案。

(在 Chrome 中,索引数据库的后备存储包括数据本身的来源,因此您不能简单地移动文件。)

选项 1 export/import

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

将数据添加到新站点的一些事务。

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

选项 2 如果 chrome 并使用 chrome 扩展名。我面前没有页面,但如果你知道你的扩展名和另一个扩展名,你可以跨站点

我想说 chrome.runtime.message() 用于在扩展程序的后台和其他扩展程序页面之间进行通信,同时需要与另一个站点进行通信。