出现这个问题是公司出现一个需要,需要把各系统整合到一个系统,之前已有一个系统,最新的想升级为vue3+vite+ts的技术栈,在升级的时候ifarame一直渲染不出来。
Uncaught DOMException: Failed to execute ‘postMessage’ on ‘Window’: # could not be cloned.
后来发现在传值的问题,postMessage的第一个参数为传个子iframe的参数。但是报错为不可克隆。
需要在传值的时候.
先看MND对postMessage的描述:
结构化克隆算法
结构化克隆算法用于复制复杂 JavaScript 对象的算法。通过来自 Worker 的 postMessage() 或使用 IndexedDB 存储对象时在内部使用。它通过递归输入对象来构建克隆,同时保持先前访问过的引用的映射,以避免无限遍历循环。
需要处理传参的数据进行处理
JSON.parse(JSON.stringify(data))
给第一个参数进行深拷贝,当然我这样是简单的写法,只需要深拷贝一次就行。