LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 183|回复: 0

创建自定义事件

[复制链接]
发表于 2024-1-16 15:26:01 | 显示全部楼层 |阅读模式
我们不仅可以分配事件处理程序,还可以从 JavaScript 生成事件。

自定义事件可用于创建“图形组件”。例如,我们自己的基于 JavaScript 的菜单的根元素可能会触发 open(打开菜单),select(有一项被选中)等事件来告诉菜单发生了什么。另一个代码可能会监听事件,并观察菜单发生了什么。

我们不仅可以生成出于自身目的而创建的全新事件,还可以生成例如 click 和 mousedown 等内建事件。这可能会有助于自动化测试。

事件构造器
内建事件类形成一个层次结构(hierarchy),类似于 DOM 元素类。根是内建的 Event 类。

我们可以像这样创建 Event 对象:

let event = new Event(type[, options]);
参数:

type —— 事件类型,可以是像这样 "click" 的字符串,或者我们自己的像这样 "my-event" 的参数。

options —— 具有两个可选属性的对象:

bubbles: true/false —— 如果为 true,那么事件会冒泡。
cancelable: true/false —— 如果为 true,那么“默认行为”就会被阻止。稍后我们会看到对于自定义事件,它意味着什么。
默认情况下,以上两者都为 false:{bubbles: false, cancelable: false}。

dispatchEvent
事件对象被创建后,我们应该使用 elem.dispatchEvent(event) 调用在元素上“运行”它。

然后,处理程序会对它做出反应,就好像它是一个常规的浏览器事件一样。如果事件是用 bubbles 标志创建的,那么它会冒泡。

在下面这个示例中,click 事件是用 JavaScript 初始化创建的。处理程序工作方式和点击按钮的方式相同:

<button id="elem">Autoclick</button>

<script>
  let event = new Event("click");
  elem.dispatchEvent(event);
</script>
event.isTrusted
有一种方法可以区分“真实”用户事件和通过脚本生成的事件。

对于来自真实用户操作的事件,event.isTrusted 属性为 true,对于脚本生成的事件,event.isTrusted 属性为 false。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表