我们能否使用postMessage传递DOM元素?

8

我在一个页面上有两个iframe,我正在尝试使用postMessage将一个iframe中的DOM元素传递到另一个iframe中。但是Chrome一直提示错误:

"DataCloneError:无法克隆对象。"

是否有解决此问题的方法?

2个回答

8

根据规范,您不能发送DOM节点,否则会引发错误。

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


1
你可以尝试使用 innerHTML,它 "获取或设置元素中包含的 HTML 或 XML 标记。"(https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML)
使用 innerHTML,你可以将元素内容作为字符串传递,然后在另一个 iframe 中再次使用 innerHTML 插入该内容。
在这个答案中,有一种简单的方法来获取节点的 innerHTML 内容:https://dev59.com/3nI-5IYBdhLWcg3wpaB1#1750860 你无法获得与元素相关联的事件,但在某些情况下,此方法可能足够。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接