1.什么事件?什么是事件流 ?事件流的出现?
一.什么是事件?
事件是文档或者浏览器窗口中发生的,特定的交互瞬间。
事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字。
事件是javaScript和DOM之间交互的桥梁。你若触发,我便执行——事件发生,调用它的处理函数执行相应的 JavaScript代码给出响应。典型的例子有:页面加载完毕触发load事件;用户单击元素,触发click事件
事件流:
通过使用JavaScript,你可以监听特定事件的发生,并规定让某些事件发生以对这些事件做出响应
事件发生时会在元素节点与根节点之间按照特定的顺序传播,路径所经过的所有节点都会收到该事件,这个传播过程即DOM事件流。
事件流就是描述了页面中接受事件的顺序,在浏览器发展的初期,两大浏览器厂商IE和Netscape互掐,出现了一个坑爹的情况,那就是他们对事件流的解释出现了两中截然相反的定义。也就是我们所熟悉的:IE的事件冒泡,Netscape的事件捕获。对于IE浏览器和chrome,火狐,微软浏览器来说,兼容性性要处理,尤其是对IE来说,对其兼容性有一些特别的处理。事件流描述的是从页面中接收事件的顺序。
DOM(文档对象模型)结构是一个树型结构,当一个HTML元素产生一个事件时,该事件会在元素结点与根结点之间的路径传播,路径所经过的结点都会收到该事件,这个传播过程可称为DOM事件流。
二.事件的传播
关于事件的传播网景公司和微软公司有不同的理解,
微软公司认为事件应该是由内向外传播,也就是当事件触发时,应该先触发当前元素上的事件,然后再向当前元素的祖先元素上传播,也就说事件应该在冒泡阶段执行。
网景公司认为事件应该是由外向内传播的,也就是当前事件触发时,应该先触发当前元素的最外层的祖先元素的事件,然后在向内传播给后代元素
三.事件传播的阶段(DOM2级事件)
1.捕获型阶段:
事件捕获即事件最早由不太具体的节点接收,而最具体的节点最后接收到事件。点击text部分时,先由window接收,然后逐级传播至text元素;即由最不特定的事件目标到最特定的事件目标,DOM的根到叶子。
2.目标阶段
当事件到达目标节点时,事件就进入了目标阶段。事件在目标节点上被触发,然后逆向回流,知