Cykapunk 2020 2023-04-13 21:15 采纳率: 0%
浏览 13

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

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

  • 写回答

2条回答 默认 最新

  • IT大鸵鸟 2023-04-13 21:37
    关注

    可以使用具名函数来实现移除事件监听器。具体方法如下:
    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移除事件监听器。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月13日

悬赏问题

  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写
  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播
  • ¥15 数字图像的降噪滤波增强
  • ¥15 心碎了,为啥我的神经网络训练的时候第二个批次反向传播会报错呀,第一个批次都没有问题
  • ¥15 MSR2680-XS路由器频繁卡顿问题
  • ¥15 VB6可以成功读取的文件,用C#读不了