JS中的事件机制

DOM事件操作(监听和触发),都定义在EventTarget接口,Element节点,document节点和window对象,都部署了这个接口。

一. 事件传播的三个阶段

  1. 捕获阶段 从window对象传导到目标节点
  2. 目标阶段 在目标节点上触发
  3. 冒泡阶段 从目标节点传导回window对象

事件传播的最上层对象是window,接着依次是document , html (document.documentElement)和body(document.body)

如果< body >元素中有一个< div >元素,点击该元素,事件的传播顺序,在捕获阶段依次为 window ,document, html ,body,div 在冒泡阶段依次为div,body, document,window

二 . 事件的代理

由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点的监听函数定义在父节点上,由父节点的监听函数统一处理多个子元素的事件,这种方法叫做事件的代理,这样做的好处是,只要定义一个监听函数,就能处理多个子节点的事件,而且以后添加子节点,监听函数依然有效。

父节点是通过event.target来找对应的子节点的(事件处理程序中的this值始终等于currentTarget的值,指向的是绑定到的那个元素)

三. 事件的对象

事件发生以后,会生成一个事件对象,作为参数传给监听函数,浏览器原生提供一个Event对象,所有的事件都是这个对象的实例,或者说继承了Event.prototype对象。

只有在事件处理程序执行期间,event对象才会存在,一旦事件处理程序执行完毕,event对象就会被销毁

你可能感兴趣的:(JS中的事件机制)