DOM事件(上)

1 事件流

什么是DOM事件??
点击一个DOM元素
键盘按下一个键
输入框输入内容等等这些都会触发DOM事件

事件流分为三个过程
1. capture phase 事件捕获过程
2. target phase 事件的触发过程
3. bubble phase 事件的冒泡过程
比如如图DOM树中,点击标签触发click事件的事件流
这里写图片描述

1. capture phase

一个事件的捕获过程。从DOM树顶点window开始捕获到触发事件元素的父元素停止,然后进入target phase 过程
这里写图片描述

2. target phase

是目标节点元素的触发过程,图中为红色实线和绿色实线部分。
这里写图片描述

3. bubble phase

最后是事件的冒泡过程,注意是从目标节点的父元素开始冒泡到顶层的window对象。为图中新增的绿色虚线部分。
这里写图片描述

总结

并不是所有浏览器都有这三个过程,比如低版本的IE浏览器就没有target phase过程
不是所有事件都有这三个过程。有些事件就没有冒泡过程
比如页面的load事件就没有冒泡过程。


2 事件注册与触发

1.事件注册
2.取消事件注册
3.事件触发
这三者的主体都是DOM元素
1.事件注册
eventTarget.addEventListener( type, listener [, useCapture])

–type:事件类型。
—listener:处理
–useCapture 设置是否是捕获过程,默认为false.冒泡过程。
这里写图片描述
elem.addEventListener(‘click’, clikcHandler, false);
elem.onclick = clickHandler;
两者的区别在与元素使用addEventListener()时能同时为click事件注册多个处理程序。而elem.onclick则只能有一个处理程序。
比如还可以增加click事件的注册事件处理函数,且有效
elem.addEventListener(‘click’, otherclikcHandler, false);


2.取消事件注册
eventTarget.removeEventListener( type, listener [, useCapture]);
或者
elem.onclick = null;//不建议用这种方式

3.事件触发
有两种方式触发事件
1.人为触发
2.程序触发
eventTarget.dispatchEvent(type)
elem.dispatchEvent('click');//触发elem元素的点击事件。
浏览器兼容型 (IE6,7,8)
事件这侧与取消
--attchEvent/detachEvent

事件触发
-- fireEvent(e);

no capture  :没有捕获阶段,有冒泡阶段。
兼容代码

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值