登录
我们知道,HTML 可以对 dom 添加事件监听,对一些操作进行监听:
Dom.addEventListener('click', event => {}) // 监听点击事件
Dom.addEventListener('mousedown', event => {}) // 监听鼠标按下事件
然而有时,这些事件可能不能满足我们的开发需求,这时我们可以自定义一些事件。
功能需要事件派发 dispatchEvent 和 创建事件 new Event() 配合完成。
Event 语法:
let event = new Event(typeArg, eventInit);
dispatchEvent 语法:
Dom.dispatchEvent(event) // 为 Dom 派发一个 Event 类型的事件。
案例:
下面是一个简单的案例,先给 .box 这个 Dom,添加好事件监听,然后开始每隔一秒,派发一个 go 事件。
// 获取 dom
let boxDom = document.querySelector('.box')
// 监听事件
boxDom.addEventListener('go', event => {
console.log(event)
})
// 每个一秒触发此事件
setInterval(() => {
// 创建一个 Event 对象
let eventGo = new Event('go')
// 添加新字段
eventGo.myKey = Date.now()
// 给 boxDom 派发此事件
boxDom.dispatchEvent(eventGo)
}, 1000);
由上可见,通过 js 代码我们可以自定义 Dom 的事件并触发。