You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询window.onmessage与addEventListener('message')的区别及假设是否正确

两种window message监听方式的区别验证

你的所有假设都是正确的,具体细节如下:

1. window.onmessage = onMessage

  • 这是直接给window的onmessage属性赋值事件处理函数,本质是覆盖式绑定
  • 同一时间只能生效一个处理函数,多次调用时,后续赋值的函数会直接替换掉之前的,最终只有最后一次赋值的函数会在消息触发时执行

2. window.addEventListener("message", onMessage)

  • 这是通过标准事件监听API添加监听器,属于追加式绑定
  • 可以多次调用添加多个监听器(哪怕是同一个onMessage函数),每次收到message消息时,所有绑定的监听器都会按添加顺序执行,调用X次就会触发X次onMessage执行

核心区别总结

  • 赋值式(onmessage = ...):仅支持单一监听器,后续赋值会覆盖原有绑定
  • 监听式(addEventListener):支持多监听器共存,追加绑定不会影响已有监听器

内容的提问来源于stack exchange,提问作者Ganbin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 16:37:13