1. 事件发展的历史
1.1 行内事件(Inline Events)
这是浏览器最早支持的写法,现在都不这么写了。
|
|
1.2 DOM0 Events
|
|
- 绝大多数浏览器都支持该写法
- event handler中this就是触发事件的元素(IE有些差别,this指的是全局对象)。
- 只能绑定一个事件,因为是赋值操作。
1.3 DOM2 Events
该机制可以支持绑定多个事件,但是浏览器API会有些不同。
|
|
1.4 事件兼容的写法
|
|
2. 事件的传播
事件的传播方式有两种捕获
和冒泡
,提出这两种机制的浏览器厂商分别是Netscape和Microsoft。捕获可以理解事件是由外向内传播,而冒泡刚好相反。后来W3C制定了一套事件的传播机制,先是捕获阶段,然后到达目标元素,最后是冒泡阶段。
下面举例说明一下
|
|
如果用户单击了inner,事件传播过程如下:
- 捕获阶段。寻找inner父级元素是否使用捕获的方式来定义click事件,结果找到middle,所以先输出了click middle。
- 目标阶段。inner自己输出click inner。
- 冒泡阶段。寻找inner父级元素是否使用冒泡的方式定义了click事件,结果找到outer,所以最后输出了click outer。
3. Event handler兼容性代码
|
|