停止收听postMessage消息事件

sil*_*min 6 html5 postmessage

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

接收者:

window.addEventListener("message", function(e){
       console.log('hi');
       window.removeEventListener("message", function(e){}, false)
}, false);
Run Code Online (Sandbox Code Playgroud)

发件人:

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

有没有解决的办法 ?

ars*_*265 12

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

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

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