js自定义事件

不积跬步无以至千里 / 2023-08-28 / 原文

新建

js新建自定义事件方式有两种:

1. new Event('myEvent',initEvent)
2.  new CustomEvent('myEvent',initEvent) 
// new CustomEvent('myEvent', {detail:{name: 'yejingxiao'}})
相同点

简单的自定义事件 Event, CustomEvent都可以用,且第二个参数都是可选非必填参数,用以配置常见的事件设置:是否冒泡("bubbles": true/false)、是否能被取消("cancelable": true/false)等等

不同点

从书写方式上可以看出两者区别,CustomEvent除了定义简单自定义事件,还支持detail参数传递;


触发

触发是通过 dispatchEvent 方式去触发
window.dispatchEvent(myEvent)
当然 ie8及以下存在兼容问题需要用fireEvent

if (window.dispatchEvent) {
	window.dispatchEvent(myEvent)
} else {
	window.fireEvent(myEvent)
}

监听

通过addEventListener方式来监听

window.addEventListener("myEvent", e => {
	alert(`myEvent事件触发,name === ${e.detail.name} `);
})