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 工作

window.addeventlistener使用方法

window.addEventListener 代码在移动设备上不起作用

window.addEventListener("消息", getData);在野生动物园中不起作用?