IndexedDB:复制到不同的域?

D.R*_*.R. 2 google-chrome indexeddb

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

我猜想,由于同源策略,这对于 JavaScript 来说是不可能的。然而,我的用户“技术精通”并且都使用 Chrome。

那么有没有一种方法可以让我的用户手动将 IndexedDB 从一个域移动到另一个域?也许是在Chrome用户目录中进行一些文件复制操作?

Jos*_*ell 6

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

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