【问题标题】:Uncaught DOMException: Failed to execute 'postMessage' on 'Window': An object could not be cloned未捕获的 DOMException:无法在“窗口”上执行“postMessage”:无法克隆对象
【发布时间】:2017-02-21 19:40:53
【问题描述】:

我正在打电话

parent.postMessage(obj, 'whatever');

来自 iframe,我收到此错误:Uncaught DOMException: Failed to execute 'postMessage' on 'Window': An object could not be cloned.

【问题讨论】:

标签: javascript iframe postmessage


【解决方案1】:

原来我传递的对象有方法,这就是错误消息显示An object could not be cloned的原因。

为了解决这个问题,您可以执行以下操作:

obj = JSON.parse(JSON.stringify(obj));
parent.postMessage(obj, 'whatever');

【讨论】:

  • 很高兴知道,因为 Mozilla 说消息已为您序列化:developer.mozilla.org/en-US/docs/Web/API/Window/postMessage 有道理它不知道如何序列化函数...
  • 在传递给父对象后,您是否能够访问该对象上的方法??
  • 请注意,这样做会导致循环崩溃(应该由 postMessage 保留)而不是函数。
  • 在我的情况下,问题是由参数中不存在的变量引起的。
  • 使用 AngularJS 时,我发现此解决方案删除了​​ TrustedValueHolderType 的字段。我正在寻找解决此问题的解决方案。
猜你喜欢
  • 2021-10-25
  • 2019-08-26
  • 2019-03-10
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 2014-06-15
  • 2019-08-16
相关资源
最近更新 更多