我们可以使用postMessage传递DOM元素吗?

时间:2013-09-18 15:08:23

标签: javascript html5 iframe postmessage

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

  

“DataCloneError:无法克隆对象。”

有没有解决这个问题的方法?

2 个答案:

答案 0 :(得分:4)

根据spec,你不能发送DOM节点,它会抛出错误。

  

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

答案 1 :(得分: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

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