DOM事件

DOM事件

1.DOM事件的级别

1. DOM0 element.onclick = function(){}

2.DOM2 element.addEventListener('click',function(){},false)

3.DOM3 element.addEventListener('keyup',function(){},false)

DOM2和DOM3的主要区别就是 定义的事假类型不同 DOM3增加了键盘事件 和 鼠标事件

2.事件模型

冒泡

结构上从里到外

目标元素 => ...(自己写的都没结构) => body => document => html => window

捕获

结构上从外到里

DOM事件

3.event对象常见应用

1.event.preventDefault() //阻止浏览器默认行为

2.event.stopPropagation() //阻止冒泡

3.event.stopImmediatePropagation() //当一个事件别注册多次时 优先级

列如

DOM事件

此时点击的结果为

DOM事件

当我们只想要一个注册事件1的时候 我们可以在 注册事件一的函数上加上 event.stopImmediatePropagation()

DOM事件

此时 结果就为

DOM事件

4.event.currentTarget //当前绑定事件的对象的dom

5.event.targe //触发事件的目标dom 事件委托

4.自定义事件

创建自定义事件的方法有两种

1.event = new Event(typeArg, eventInit);

typeArg

DOMString 类型,表示所创建事件的名称。

eventInit可选

是 EventInit 类型的字典,接受以下字段:

  • "bubbles",可选,Boolean类型,默认值为 false,表示该事件是否冒泡。
  • "cancelable",可选,Boolean类型,默认值为 false, 表示该事件能否被取消。
  • "composed",可选,Boolean类型,默认值为 false,指示事件是否会在影子DOM根节点之外触发侦听器。
  • DOM事件

 

2.event = new CustomEvent(typeArg, customEventInit);

typeArg

一个表示 event 名字的字符串

customEventInit | 可选

Is a CustomEventInit dictionary, having the following fields:  一个字典类型参数,有如下字段

  • "detail", optional and defaulting to null, of type any, that is a event-dependant value associated with the event.   可选的默认值是 null 的任意类型数据,是一个与 event 相关的值
  • bubbles 一个布尔值,表示该事件能否冒泡。 来自 EventInit。注意:测试chrome默认为不冒泡。
  • cancelable 一个布尔值,表示该事件是否可以取消。 来自 EventInit

DOM事件

Event和customEvent 的区别 主要在于 customeEvent 可以传递 自己携带的一些参数