自定义事件和postMessage之间的区别

12

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

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

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

1个回答

25

这就像是留言给邻居要他们把电视音量关小,和试图闯入他们的公寓自己把电视音量调低之间的区别。

如果按照同源策略或访问控制允许来源,你不能将事件分派到不允许访问的框架中,因为其中一些消息可能会影响页面的操作。但是,消息旨在用于不同页面之间的通信 - 如果他们不想听取消息,他们就不必这样做。

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


如果我们在同一个域名下怎么办? - Afshin Mehrabani
4
那么结果应该是类似的。无论是你的公寓还是你的电视,不管你让孩子把它关小声还是自己动手,都无所谓。 - Amadan
太棒了,这正是我想要的。 - Afshin Mehrabani
5
最棒的例子 - Manel Clos
2
更像是朝他们的电视扔石头,希望它能停下来。它可能会停下来,也可能不会,但如果主持人足够亲切,他们会听取这个“请求”并自行降低音量。 - bendtherules
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接