停止收听postMessage消息事件

时间:2012-10-26 20:13:31

标签: html5 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);

有解决方法吗?

1 个答案:

答案 0 :(得分:12)

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

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

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