一个页面里有两个地方用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移除事件监听器。
不知道你这个问题是否已经解决, 如果还没有解决的话: