DOM 事件模型或 DOM 事件机制

79 阅读1分钟

捕获与冒泡

  • 捕获是指从外到内找监听函数
  • 冒泡是指从内到外找监听函数

屏幕截图 2021-12-19 014740.png

*对于事件绑定的API,IE5、网景和W3C的各有不同

IE5:
baba.attachEvent('onclick',fn)  //冒泡
网景:
baba.addEventListener('onclick',fn)  //捕获
W3C:
baba.addEventListener('onclick',fn,bool) //
1.如果bool不传或为falsy,就让fn走的是冒泡,在冒泡阶段发现baba有fn监听函数,就会调用fn,并提供事件信息
2.如果booltruefn走捕获,在捕获阶段发现baba有fn监听函数,就会调用fn,并提供事件信息(先捕获,再冒泡)——>W3C事件模型。
复制代码
  • 如果监听的元素就是用户点击的元素,谁先监听就先执行谁

特例:只有一个div被监听(不考虑父子同时被监听),fn分别在捕获和冒泡阶段监听click事件,用户点击的事件就是开发者监听的

  • target和currentTarget:target是用户点击的,currentTarget是开发者监听的
  • 取消冒泡:e.stopPropagation( )
  • 事件的特性:Bubbles表示是否冒泡;Cancelableb表示是否支持开发者取消冒泡。如scroll不支持取消冒泡。
  • DOM事件属于浏览器的功能,js只是调用了DOM提供的addEventListener而已