Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stop listening to postMessage message event

I can not seem to have the receiver event listener removed. Given the code below the console will continue printing "hi" endlessly.

Receiver:

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

Sender :

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

Is there a way around this ?

like image 934
silkAdmin Avatar asked Oct 26 '12 20:10

silkAdmin


Video Answer


1 Answers

I believe in order to remove the listener you have to have a reference to the same function so like this:

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

So the reason your's doesn't work is because it doesn't have a reference to that function as a listener.

like image 197
ars265 Avatar answered Sep 20 '22 07:09

ars265