html - 停止监听 postMessage 消息事件

标签 html postmessage

我似乎无法删除接收器事件监听器。鉴于下面的代码,控制台将继续无休止地打印“hi”。

接收者:

window.addEventListener("message", function(e){
       console.log('hi');
       window.removeEventListener("message", function(e){}, false)
}, false);

发件人:

var emiter = setInterval(function(){
            console.log('sending message');
            window.parent.postMessage( messageData, "*" );
        }, 1000);

有办法解决这个问题吗?

最佳答案

我相信为了删除监听器,您必须引用相同的函数,如下所示:

var f = function(e){
  console.log('hi');
  window.removeEventListener("message", f, false);
}
window.addEventListener("message", f);

所以你的不起作用的原因是因为它没有作为监听器对该函数的引用。

关于html - 停止监听 postMessage 消息事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13093785/

相关文章:

android - 尝试在 PhoneGap/Cordova 应用程序中自动播放 YouTube 视频

javascript - 如何检查音频是否未加载?

javascript - 通过单独的 JavaScript 事件监听器更改 $scope Angular 变量

javascript - 允许两个站点通信以了解 iframe 的当前 URL

html - 尝试更改单个 <tag> 元素的颜色但不注册

html - 将 div 放置在文本的右侧

javascript - 如何使用window.postMessage动态嵌入iframe?

javascript - 如何从(纽约)网页到 Chrome 扩展进行安全通信

WebStorm 在 web worker 的 postMessage 函数中显示弃用错误

windows - PostMessage() 消息在 Windows 中是否按顺序显示?