window.addEventListener 正在监听 window.parent.postMessage 两次
Posted
技术标签:
【中文标题】window.addEventListener 正在监听 window.parent.postMessage 两次【英文标题】:window.addEventListener is listening to window.parent.postMessage twice 【发布时间】:2020-10-23 05:56:02 【问题描述】:当从子 iframe 中单击某个按钮时,会触发此函数:
function someFunc(e)
some Code
window.parent.postMessage(
event_id: 'id_id',
data:
note: note
,
"*"
);
在父窗口中被监听
window.addEventListener('message', function (event)
if (event.data.event_id === 'id_id')
var note = event.data.data.note;
do something with note
,false);
这里的问题是单击 someFunc() 函数被调用一次,但是 window.addEventListener 监听器正在监听它两次。找不到它为什么会这样。
【问题讨论】:
【参考方案1】:我在 Angular 8 应用程序中遇到了同样的问题。 我摆脱侦听器和 iFrame 之间的这些多条消息的唯一方法是将此代码添加到我的组件中:
ngOnDestroy()
window.removeEventListener('message', this.messageHandler, false);
由此得出的结论是,不存在多个消息,而是多个侦听器。
【讨论】:
以上是关于window.addEventListener 正在监听 window.parent.postMessage 两次的主要内容,如果未能解决你的问题,请参考以下文章
window.addEventListener 正在监听 window.parent.postMessage 两次
JS window.addEventListener仅适用于一页
$window.addEventListener 仅在第一次工作,但下一次在病房中无法通过 $watch 工作