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() 用于在扩展程序的后台和其他扩展程序页面之间进行通信,同时需要与另一个站点进行通信。
我正在切换域并希望为我的用户提供在我的新域上继续使用相同 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() 用于在扩展程序的后台和其他扩展程序页面之间进行通信,同时需要与另一个站点进行通信。