创建事件(new Event)

上一节我们讲到了 CustomEvent,这代表这自定义事件。这一节我们将讲 new Event 和 Dispatch 的原理和应用。

首先,我们不得不提到一个叫 createEvent() 的方法。他可以用来创建一个新的事件,但是,它已经被废弃了。

首先先来看一个截图:


创建事件(new Event)_第1张图片

OK,那么我们就来学习这个 new Event() 吧。

event = new Event(type [, eventInitDict])

返回其 type 属性值设置为 type 的新事件。可选的 eventInitDict 参数允许通过同名的对象成员设置 bubbles 和 cancelable 的属性。

我们可以使用类似下列的方式来创建它:

let event = new Event('build');

// 监听事件
elem.addEventListener('build', function (e) { ... }, false);

// 分配事件
elem.dispatchEvent(event);

这个和我们上节讲的 CustomEvent API 是差不多的。

但是,兼容性来讲:它仅支持 IE9 及以上浏览器,以及支持 Microsoft Edge 和更高版本。其它的现代浏览器都兼容。

而像上面的例子那样,仅仅是创建了它,我们仍然可以使用 CustomEvent 来设置其 detail 属性:

let event = new CustomEvent('build', { 'detail': elem.dataset.time });

向下列的这个代码一样,你可以使用它来为事件监听添加额外的信息:

function eventHandler(e) {
  log('The time is: ' + e.detail);
}

这也正是我们上一节所讲到的内容。

那么它有什么意义呢?我们都知道一个道理,我们的 DOM 就是为了触发我们所定义的监听器中的回调函数,但是这都需要我们人为的进行类似于点击、移入、提交等动作。但是在某些时候,我们需要模拟这种方式,而不是人为的去操作,这时候,我们就需要使用自定义的创建事件。

创建事件(new Event)_第2张图片

从上面这张图我么可以看到,它有很多的初始化的值,不过一般最常用的就是前三个了。

本节内容算是一个介绍吧,我们这节中需要知道,new Event 的存在就是为了创建模拟人操作的行为。

你可能感兴趣的:(创建事件(new Event))