前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Failed to execute 'postMlessage' on "Window': [object Array could not be cloned

Failed to execute 'postMlessage' on "Window': [object Array could not be cloned

原创
作者头像
yangdongnan
发布2023-06-19 11:16:28
7850
发布2023-06-19 11:16:28
举报
文章被收录于专栏:日常记录日常记录

记录一下这个问题,

这个错误可能是因为 postMessage 方法要求传递的参数是可序列化的对象。如果传递的参数不是可序列化的对象,例如包含函数声明、对象引用等,它就会失败并抛出这个错误。 要解决这个问题,可以尝试将要传递的数据序列化为字符串,然后再进行传递。也可以使用 JSON 序列化和反序列化数据,以确保它们符合要求。

代码语言:javascript
复制
vardata = [{ name: 'John', age: 30 }, { name: 'Jane', age: 28 }]; 
var serializedData = JSON.stringify(data); 
contentWindow.postMessage(serializedData, '\*');

当使用vue3响应式时 通过iframe发送postMessage,要将被代理的对象转换为原始对象也就是使用toRaw()后在进行发送。

代码语言:typescript
复制
import {ref, toRow } from 'vue'; 
const data = ref({ a: 10 });
const message = {};

message['data'] = toRaw(data);

contentWindow.postMessage(serializedData, '\*');

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档