js如何注销addEventListener("message", function(event){*},"false"}

一个页面里有两个地方用addEventListener("message", function(event){*},"false"}做了弹窗获取返回值给a和b,但是因为没注销导致后面a修改了同时会让b也进行修改。
用remove的话又不能用匿名函数,单独写一个函数event又无法传过去,求解。

可以使用具名函数来实现移除事件监听器。具体方法如下:
1、定义一个具名函数:


function handleMessageA(event) {
    // 处理弹窗A返回的值
}

function handleMessageB(event) {
    // 处理弹窗B返回的值
}

2、在需要添加事件监听器的地方,使用定义好的具名函数作为事件处理程序:


window.addEventListener("message", handleMessageA, false);
window.addEventListener("message", handleMessageB, false);

3、在需要移除事件监听器的地方,使用定义好的具名函数作为参数,移除相应的事件监听器:


window.removeEventListener("message", handleMessageA, false);
window.removeEventListener("message", handleMessageB, false);

这样就可以避免同时修改的问题,同时也可以使用removeEventListener移除事件监听器。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^