未捕获的DOMException:无法在"Window"上执行"postMessage":无法克隆对象

nie*_*eve 40 javascript iframe postmessage

我正试着打电话

parent.postMessage(obj, 'whatever');
Run Code Online (Sandbox Code Playgroud)

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

nie*_*eve 70

事实证明我传递的对象有方法,这就是错误消息所说的原因An object could not be cloned.

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

obj = JSON.parse(JSON.stringify(obj));
parent.postMessage(obj, 'whatever');
Run Code Online (Sandbox Code Playgroud)

  • 这很好,因为Mozilla说消息是为你序列化的:https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage有道理它不知道如何序列化一个函数. .. (4认同)
  • 传递给父对象后,您是否能够访问该对象上的方法? (2认同)
  • 请注意,这样做会在循环(应由 postMessage 保留)而不是函数上崩溃。 (2认同)