1

内部にブロブとして格納されたhtmlドキュメントを含むIndexedDBデータベースと、iframeを使用してこれらのドキュメントを視覚化するWebアプリケーションがあります。

私の問題は次のとおりです。iframe内に表示されたhtmlドキュメント内のリンクをクリックするたびにhtmlドキュメントがあるデータベースのストアを取得したいのですが、試してみると例外がスローされます。私がiframeの「内側」にいない場合(関数は、iframe内のハイパーテキストリンクにバインドされたeventListenerの内側にあります)、問題なく取得します。

使用される関数は次のとおりです。

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 内のページはローカル サーバーからのものであるか、別の理由によるものです。

アドバイスありがとうございます!

4

2 に答える 2

0

Indexeddb は iframe 内で実行されないため、セキュリティ上のリスクがあります。

あなたが話している例外は、読み取り専用トランザクションを使用してオブジェクト ストア内のデータを追加、編集、または削除しようとしていることを意味します。データを操作する場合は、読み書きトランザクションを使用します。

于 2013-07-19T18:24:42.930 に答える