新闻中心

如何用j*ascript创建自定义事件_如何触发和监听?

2025-12-14
浏览次数:
返回列表
J*aScript创建自定义事件需用CustomEvent构造函数(可带detail数据)、dispatchEvent触发(支持元素或document广播)、addEventListener监听(通过e.detail获取数据),注意冒泡、取消及内存泄漏。

如何用javascript创建自定义事件_如何触发和监听?

J*aScript 中创建和使用自定义事件很简单,核心是 CustomEvent 构造函数 + dispatchEvent 触发 + addEventListener 监听。

创建自定义事件

CustomEvent 构造函数创建事件对象,可传入事件名和配置对象,其中 detail 字段用来携带任意数据:

  • new CustomEvent('myEvent', { detail: { id: 123, msg: 'hello' } })
  • detail 可以是字符串、数字、对象、数组,甚至函数(注意跨 iframe 时函数会丢失)
  • 如果不需要传参,可省略配置对象:new CustomEvent('myEvent')

触发自定义事件

调用目标元素(或 documentwindow)的 dispatchEvent 方法:

  • element.dispatchEvent(event) —— 元素上触发
  • document.dispatchEvent(event) —— 全局广播(适合跨组件通信)
  • 事件会按 DOM 冒泡规则向上冒泡(除非设置 bubbles: false
  • 默认不取消冒泡,也不可被阻止(除非显式设置 cancelable: true

监听自定义事件

用标准的 addEventListener 监听,事件名与创建时一致:

Glarity Glarity

Glarity是一款免费开源的AI浏览器扩展,提供YouTube视频总结、网页摘要、写作工具等功能,支持免费的镜像翻译,电子邮件写作辅助,AI问答等功能。

Glarity 131 查看详情 Glarity
  • element.addEventListener('myEvent', handler)
  • 回调函数中通过 e.detail 获取传递的数据:e.detail.ide.detail.msg
  • 支持捕获阶段监听:element.addEventListener('myEvent', handler, true)
  • 记得在不需要时用 removeEventListener 清理,避免内存泄漏

一个完整小例子

按钮点击后触发自定义事件,父容器监听并打印数据:

// 创建事件
const event = new CustomEvent('dataReady', {
  detail: { user: 'Alice', score: 95 },
  bubbles: true
});

// 触发(比如在按钮点击里)
document.getElementById('btn').addEventListener('click', () => {
  document.body.dispatchEvent(event);
});

// 监听
document.body.addEventListener('dataReady', (e) => {
  console.log('收到数据:', e.detail); // { user: 'Alice', score: 95 }
});

基本上就这些。不复杂但容易忽略细节,比如忘记传 detail 或没调用 dispatchEvent

以上就是如何用j*ascript创建自定义事件_如何触发和监听?的详细内容,更多请关注其它相关文章!


# 有哪些  # 网站推广充值 会计处理  # 正宗网站建设价格  # 简单网站建设名字  # 北京专业seo外包电话  # 清涧中小网站建设平台  # 济南网站建设地方  # SEO导航语音转文字  # 龙华网站建设设计服务  # 1688 seo工具  # 奶盘seo外链  # 相关文章  # 与传统  # javascript  # 有何不同  # 如何实现  # 等功能  # 不需要  # 如何用  # 回调  # 自定义  # win  # ai  # 回调函数  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 韩剧圈正版入口页面_韩剧圈官网登录链接  c++如何使用std::memory_order控制原子操作顺序_c++ C++11内存模型详解  Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐  126邮箱账号注册 电脑版登录入口  如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略  AI泡沫首次被“刺破”:GPU十年都无法存活!  押井守高度称赞《辐射4》:玩了八年都停不下来!  微信聊天记录怎么加密_微信聊天记录加密方法  HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全  qq邮箱日历功能怎么用_创建日程与会议邀请的技巧  Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】  C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责  vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法  Angular中父组件异步更新子组件复选框状态的实践指南  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  痛风发作了怎么办? 快速止痛和后期饮食调理  2026春节假期票务安排_2026春节放假购票指南  深入理解J*a链表中的IPosition接口与使用  sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  Go语言中JSON数据解码与字段访问指南  UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS  蛙漫安全无毒 官方认证的绿色入口  GemBox Document HTML转PDF垂直文本渲染问题及解决方案  J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明  可靠CSGO开箱平台解析 CSGO开箱网合集  Discord Slash 命令响应超时问题的异步解决方案  Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】  夸克AO3官网入口_AO3镜像网站2025推荐  网站内容防复制粘贴的实现策略与局限性  在命令行怎么运行html项目_命令行运行html项目方法【教程】  PHP中SSG-WSG API的AES加密实践:正确使用初始化向量  css滚动动画效果怎么实现_使用Animate.css滚动触发动画类  探索高级语言到原生C/C++的转译:挑战与内存管理策略  QQ邮箱官方登录入口_QQ邮箱网页版快捷使用平台  QQ网页版官方账号入口 QQ网页版网页版登录指南  现代化 SciPy 一维插值:interp1d 的替代方案与最佳实践  Win11网速慢怎么解决 Win11网络设置优化解除限速  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问  MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略  怎样在Excel中做仪表盘_Excel仪表盘设计与关键指标展示方法  Typer应用中动态命令行参数的解析与处理  小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口  创客贴用户入口官网登录 创客贴网页版电脑版系统  漫蛙2漫画入口 漫蛙正版网页漫画直达网址  漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址  Excel如何用迷你图显趋势_Excel用迷你图显趋势【趋势小图】  Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接  纯CSS与HTML网格布局的HTML精简策略:SVG与JS方案解析 

搜索