7

我似乎无法删除接收者事件侦听器。鉴于控制台下方的代码将继续无休止地 打印“ 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);

有没有解决的办法 ?

4

1 回答 1

18

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

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

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

于 2012-10-26T20:19:06.503 回答