ページに 2 つの iframe があり、postMessage を使用して、ある iframe から別の iframe に DOM 要素を渡そうとしています。しかし、クロムは私にエラーを出し続けます:
"DataCloneError: オブジェクトを複製できませんでした。"
この問題を回避する方法はありますか?
ページに 2 つの iframe があり、postMessage を使用して、ある iframe から別の iframe に DOM 要素を渡そうとしています。しかし、クロムは私にエラーを出し続けます:
"DataCloneError: オブジェクトを複製できませんでした。"
この問題を回避する方法はありますか?
仕様によると、DOM ノードを送信することはできず、エラーがスローされます。
メッセージは、ネストされたオブジェクトや配列などの構造化オブジェクトにすることができ、JavaScript 値 (文字列、数値、Date オブジェクトなど) を含めることができ、File Blob、FileList、および ArrayBuffer オブジェクトなどの特定のデータ オブジェクトを含めることができます。
「要素内に含まれる HTML または XML マークアップを取得または設定する」innerHTMLを試すことができます( https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML )
innerHTML を使用すると、要素のコンテンツを文字列として渡すことができます。次に、別の iframe で、そのコンテンツを再び innerHTML を使用して挿入します。
この回答には、ノードの innerHTML コンテンツを取得する簡単な方法があります: https://stackoverflow.com/a/1750860/1401341
要素に関連付けられたイベントは取得されませんが、場合によってはこの方法で十分な場合があります。