8

我在一个页面上有 2 个 iframe,我正在尝试使用 postMessage 将 DOM 元素从一个 iframe 传递到另一个 iframe。但是chrome一直给我错误:

“DataCloneError:无法克隆对象。”

有没有办法解决这个问题?

4

2 回答 2

8

根据规范,你不能发送 DOM 节点,它会抛出一个错误。

消息可以是结构化对象,例如嵌套对象和数组,可以包含 JavaScript 值(字符串、数字、日期对象等),并且可以包含某些数据对象,例如 File Blob、FileList 和 ArrayBuffer 对象。

于 2015-09-11T23:47:53.630 回答
0

您可以尝试使用innerHTML,它“获取或设置元素中包含的 HTML 或 XML 标记。 ”(https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML

使用innerHTML,您可以将元素的内容作为字符串传递,然后在另一个iframe 中插入该内容,再次使用innerHTML。

在这个答案中,有一种简单的方法可以获取节点的 innerHTML 内容: https ://stackoverflow.com/a/1750860/1401341

您不会将事件附加到元素,但在某些情况下,此方法可能就足够了。

于 2020-04-28T16:21:17.553 回答