主窗口的IndexedDB数据库与iframe内容的数据库不同?

问题描述 投票:1回答:2

我有一个IndexedDB数据库,其中html文档存储为blob,一个webapp使用iframe可视化这些文档。

我的问题是:每次我单击显示在iframe内html文件内的链接时,我都想获取HTML文档所在的数据库的存储,但是当我尝试时会抛出异常。当我不在iframe内时(该函数位于eventListener内,并绑定到iframe内的超文本链接),它可以毫无问题地获得它。

使用的功能是:

function getObjectStore(store_name, mode) {
  var tx = db.transaction(store_name, mode); // mode in this case is 'readonly'
  return tx.objectStore(store_name); // line where the exception is thrown when "inside the iframe"
}

其中db是我的数据库。抛出的异常是:

例外...“在不允许突变的数据库上尝试了突变操作。”代码:“ 11” nsresult:“ 0x80660006(InvalidStateError)”

由于在其他情况下一切正常,并且在获取商店的步骤中没有发现任何问题,所以我想知道是否存在此问题,因为即使主页和iframe中的页面来自我的本地服务器,或者由于其他原因。

谢谢您的建议!

iframe indexeddb
2个回答
0
投票

Indexeddb不在iframe deu安全风险内运行。

您所谈论的异常意味着您正在尝试使用只读事务来添加,编辑或删除对象存储中的数据。如果要处理数据,请使用读写事务。


0
投票

已知问题-第三方数据库不可见。

例如,如果在使用IndexedDB时使用iframe嵌入页面,则页面的IndexedDB数据将不可见。

请参见问题#943770:Issue 943770: DevTools: Show iframe IndexedDB databases

解决方法-一种选择是打开iframe页面直接并观察与该站点相关的indexeddb-而不是浏览iframe容器页面。

© www.soinside.com 2019 - 2024. All rights reserved.