自定义事件和postMessage的区别

Difference between custom event and postMessage

为了向另一个文档发送消息(假设是 iframe),您可以同时使用 postMessagecreateEvent 函数。假设这样:

var event = document.createEvent('CustomEvent');
event.initCustomEvent("message", true, true, 'Hello world');
iframe.dispatchEvent(event);

我的问题是,如果这两种方法都有效,那么使用 postMessagecustomEvent 有什么区别?

这是给邻居留言要求他们关掉电视与闯入他们的公寓并自己关掉电视之间的区别。

您不能将事件发送到同源策略或 Access-Control-Allow-Origin 不允许您访问的框架中,因为某些消息可能会干扰该页面的工作方式。但是消息是用于不同页面之间的通信 - 如果他们不想收听消息,则不必收听。

另一个区别是消息必须是可序列化的,而事件则不必。