自定义事件的触发 dispatchEvent 的用法

简介: 自定义事件的触发 dispatchEvent 的用法

window.addEventListener && window.dispatchEvent

一、标准浏览器提供了可供元素触发的方法:element.dispatchEvent(),在使用之前,需要创建和初始化,下面是具体的用法:

vue中举例:

1.通过 var event = document.createEvent("HTMLEvents"); 这个方法创建一个event对象实例


2.通过 event.initEvent("aaa", true, true); 初始化一个aaa事件,// 3个参数:事件类型,是否冒泡,是否阻止浏览器的默认行为

注意:/*属性,可以随便自己定义*/

event.name = 'hello, 我是小礼';
event.message = '我今年18岁';


3.然后通过 window.dispatchEvent(event); 方法触发自定义事件aaathis.$nextTick(tick => {
     var event = document.createEvent("HTMLEvents");
     event.initEvent("aaa", true, true);
     window.dispatchEvent(event);
})

4.最后在需要监听这个事件的页面,通过window.addEventListener('aaa', function(){});即可监听到事件的执行

window.addEventListener('aaa', function (event) {
    console.log(event.name+','+event.message);
}, false);
//控制台就可以打印出监听的结果:hello, 我是小礼,我今年18岁

dispatchEvent大概就是这三步

下面再看看一段代码,非IE主流浏览器及IE下的事件触发器

var fireEvent = function(element,event){
      if (document.createEventObject) {
          // IE浏览器支持fireEvent方法
          var evt = document.createEventObject();
          return element.fireEvent('on'+event,evt)
      } else {
          // 其他标准浏览器使用dispatchEvent方法
          var evt = document.createEvent( 'HTMLEvents' );
          evt.initEvent(event, true, true);
          return !element.dispatchEvent(evt);
      }
};

document.creatEventObject()是IE创建event对象实例的方法,和document.creatEvent('HTMLEvents')在非IE主流浏览器下的作用相同,fireEvent是IE下的事件触发器,与dispatchEvent在非IE主流浏览器下作用相同。

交流

我是老礼,公众号「进军全栈攻城狮」作者 ,对前端技术保持学习爱好者。我会经常分享自己所学所看的干货,在进阶的路上,共勉!


相关文章
|
移动开发 缓存 JavaScript
2021最新阿里代码规范(前端篇)
2021最新阿里代码规范(前端篇)
59110 11
2021最新阿里代码规范(前端篇)
|
4月前
|
人工智能 自然语言处理 小程序
2025 电商智能客服系统推荐:高转化、低成本的客服解决方案
电商智能客服已成营收助力,2025年渗透率超72%。专业系统可提升转化率18%、降本35%。本文基于最新数据,解析阿里云、Zendesk、华为云、科大讯飞四大主流系统在大模型应用、全渠道整合、高并发承载等核心能力,结合企业场景提供选型指南,助力电商高效决策。
2025 电商智能客服系统推荐:高转化、低成本的客服解决方案
|
Java Spring
从@Async案例找到Spring框架的bug:exposeProxy=true不生效原因大剖析+最佳解决方案【享学Spring】(上)
从@Async案例找到Spring框架的bug:exposeProxy=true不生效原因大剖析+最佳解决方案【享学Spring】(上)
|
10月前
|
存储 机器学习/深度学习 自然语言处理
避坑指南:PAI-DLC分布式训练BERT模型的3大性能优化策略
本文基于电商搜索场景下的BERT-Large模型训练优化实践,针对数据供给、通信效率与计算资源利用率三大瓶颈,提出异步IO流水线、梯度压缩+拓扑感知、算子融合+混合精度等策略。实测在128卡V100集群上训练速度提升3.2倍,GPU利用率提升至89.3%,训练成本降低70%。适用于大规模分布式深度学习任务的性能调优。
500 3
|
8月前
|
机器学习/深度学习 数据采集 搜索推荐
你以为是“说走就走”?其实是“算好才走”:大数据是怎么悄悄优化旅游体验的?
你以为是“说走就走”?其实是“算好才走”:大数据是怎么悄悄优化旅游体验的?
143 0
|
XML JSON 前端开发
json字符串CSS格式化
完成以上步骤后,你便能在网页中看到格式化后的JSON数据,它们将按照CSS定义的样式进行展示,使数据更易于阅读和理解。通过有效地结合JSON和CSS,你可以创建出更加丰富且易于交互的网页内容。
499 64
拯救你的排版噩梦,搞定Deepseek到WPS的完美转换!
使用DeepSeek生成的文案复制到WPS后排版混乱?别担心,本文教你用LibreOffice解决此问题。首先下载并安装LibreOffice,然后将DeepSeek文案粘贴其中,保存为Word格式,最后用WPS打开,排版完美保留。简单四步,轻松搞定!
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
|
内存技术
思科TAC专家分享的内嵌抓包法,真是网络大神必备技能啊!
思科TAC专家分享的内嵌抓包法,真是网络大神必备技能啊!
434 1
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 取消挂载 umount命令使用教程
【Shell 命令集合 磁盘管理 】Linux 取消挂载 umount命令使用教程
1294 1

热门文章

最新文章

下一篇
开通oss服务