我在一个页面上有 2 个 iframe,我正在尝试使用 postMessage 将 DOM 元素从一个 iframe 传递到另一个 iframe。但是chrome一直给我错误:
“DataCloneError:无法克隆对象。”
有没有办法解决这个问题?
我在一个页面上有 2 个 iframe,我正在尝试使用 postMessage 将 DOM 元素从一个 iframe 传递到另一个 iframe。但是chrome一直给我错误:
“DataCloneError:无法克隆对象。”
有没有办法解决这个问题?
根据规范,你不能发送 DOM 节点,它会抛出一个错误。
消息可以是结构化对象,例如嵌套对象和数组,可以包含 JavaScript 值(字符串、数字、日期对象等),并且可以包含某些数据对象,例如 File Blob、FileList 和 ArrayBuffer 对象。
您可以尝试使用innerHTML,它“获取或设置元素中包含的 HTML 或 XML 标记。 ”(https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML)
使用innerHTML,您可以将元素的内容作为字符串传递,然后在另一个iframe 中插入该内容,再次使用innerHTML。
在这个答案中,有一种简单的方法可以获取节点的 innerHTML 内容: https ://stackoverflow.com/a/1750860/1401341
您不会将事件附加到元素,但在某些情况下,此方法可能就足够了。