DOM事件机制

112 阅读1分钟

DOM事件捕获与冒泡:事件冒泡和事件捕获分别由微软和网景公司提出,这两个概念都是为了解决页面中事件流(事件发生顺序)的问题。

image.png

事件冒泡:事件会从内向外找监听函数,也就是表明当前事件是否会向DOM树上层元素冒泡。

示意图:

graph TD
td --> tr --> tbody --> table --> body --> html --> Document --> Window

事件捕获:事件会从外向内找监听函数。

示例图:

graph TD
Window --> Document --> html --> body --> table --> tbody --> tr --> td

事件绑定API

  • IE5*:baba.attachEvent('onclick',fn) //冒泡
  • 网景:baba.addEventListener('click',fn) //捕获
  • W3C:baba.addEventListener('click',fn,bool)

Bool

  • 如果bool不传或为False

就让fn走冒泡,即当浏览器再冒泡阶段发现baba有fn监听函数,就会调用fn,并提供事件信息。

  • 如果bool为true

就让fn走捕获,即当浏览器再捕获发现baba有fn监听函数。就会调用fn,并提供事件信息。

  • 你可以选择把fn放哪边

image.png 代码示例:

image.png 代码图解:

image.png

W3C事件模型

  • 先捕获在冒泡
  • e对象被传给所有监听函数
  • 事件结束后,e对象就不存在了