前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 AbortSignal 移除事件监听器

使用 AbortSignal 移除事件监听器

作者头像
jwj
发布2023-03-24 10:43:02
1.5K1
发布2023-03-24 10:43:02
举报

现在有个需求,弹窗打开时,监听窗口大小变化,并动态调整弹窗大小,避免弹窗比窗口还大,导致弹窗无法操作。弹窗关闭后,移除监听 resize。因为执行时需要有参数,所以 removeEventListener 并不是很适用。

最初想法是使用 addEventListenerremoveEventListener 来完成需求。

代码语言:javascript
复制
layer.open({
  type: 2,
  title: '详情',
  area: ['85%', '85%'],
  maxmin: true,
  content: "/detail.html?id=123",
  // 弹窗关闭
  end: function () {
    window.removeEventListener("resize", (e) => layer.full(index));
  },
  // 弹窗打开
  success: function (layero, index) {
    layer.full(index);
    window.addEventListener("resize", (e) => layer.full(index));
  }
});

但发现能正常添加监听器,但是不能正常移除。

于是仔细查看了 removeEventListener文档,发现了 AbortSignal

改改,使用 AbortSignal 完美实现了需求。

代码语言:javascript
复制
layer.open({
  type: 2,
  title: '详情',
  area: ['85%', '85%'],
  maxmin: true,
  content: "/detail.html?id=123",
  // 弹窗关闭
  end: function () {
    // 发出信号,可以移除监听器了
    controller.abort();
  },
  // 弹窗打开
  success: function (layero, index) {
    layer.full(index);
    window.addEventListener("resize", (e) => layer.full(index), {signal: controller.signal});
  }
});
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-03-222,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档