为 Dom 自定义事件监听

title: 为 Dom 自定义事件监听 id: 2871322c242d0f4354b1b2af561266a0 tags: [] date: 2000/01/01 00:00:00 updated: 2022/12/09 13:40:03 isPublic: true --#|[分隔]|#--

为 Dom 自定义事件监听

我们知道,HTML 可以对 dom 添加事件监听,对一些操作进行监听:

Dom.addEventListener('click', event => {}) // 监听点击事件
Dom.addEventListener('mousedown', event => {}) // 监听鼠标按下事件

然而有时,这些事件可能不能满足我们的开发需求,这时我们可以自定义一些事件。

功能需要事件派发 dispatchEvent 和 创建事件 new Event() 配合完成。

Event 语法:

let event = new Event(typeArg, eventInit);
  • typeArg:事件名称字符串,比如 'go',稍后我们可以监听 Dom 的 go 事件。

  • eventInit:可选对象,有以下几个属性:

    • bubbles:可选,Boolean类型,默认值为 false,表示该事件是否冒泡。

    • cancelable: 可选,Boolean类型,默认值为 false, 表示该事件能否被取消。

    • composed: 可选,Boolean类型,默认值为 false,指示事件是否会在影子DOM根节点之外触发侦听。

dispatchEvent 语法:

Dom.dispatchEvent(event) // 为 Dom 派发一个 Event 类型的事件。

案例:

下面是一个简单的案例,先给 .box 这个 Dom,添加好事件监听,然后开始每隔一秒,派发一个 go 事件。

由上可见,通过 js 代码我们可以自定义 Dom 的事件并触发。

Last updated

Was this helpful?