咨询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
相关产品推荐
相关产品推荐

