(1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。 ie 5.5: div -> body -> document ie 6.0: div -> body -> html -> document mozilla 1.0: div -> body -> html -> document -> window(2)捕获型事件(event capturing):事件从最不精确的对象(document 对象)开始触发,然后到最精确(也可以在窗口级别捕获事件,不过必须由开发人员特别指定)。(3)dom事件流:同时支持两种事件模型:捕获型事件和冒泡型事件,但是,捕获型事件先发生。两种事件流会触及dom中的所有对象,从document对象开始,也在document对象结束。 dom事件模型最独特的性质是,文本节点也触发事件(在ie中不会)。 支持w3c标准的浏览器在添加事件时用addeventlistener(event,fn,usecapture)方法,基中第3个参数usecapture是一个boolean值,用来设置事件是在事件捕获时执行,还是事件冒泡时执行。而不兼容w3c的浏览器(ie)用attachevent()方法,此方法没有相关设置,不过ie的事件模型默认是在事件冒泡时执行的,也就是在usecapture等于false的时候执行,所以把在处理事件时把usecapture设置为false是比较安全,也实现兼容浏览器的效果。 事件捕获阶段:事件从最上一级标签开始往下查找,直到捕获到事件目标(target)。事件冒泡阶段:事件从事件目标(target)开始,往上冒泡直到页面的最上一级标签。 假设一个元素div,它有一个下级元素p。 元素这两个元素都绑定了click事件,如果用户点击了p,它在div和p上都触发了click事件,那这两个事件处理程序哪个先执行呢?事件顺序是什么? 两种模型以前,netscape和microsoft是不同的实现方式。netscape中,div先触发,这就叫做事件捕获。microsoft中,p先触发,这就叫做事件冒泡。两种事件处理顺序刚好相反。ie只支持事件冒泡,mozilla, opera 7 和 konqueror两种都支持,旧版本的operas 和 icab两种都不支持 。 事件捕获当你使用事件捕获时,父级元素先触发,子级元素后触发,即div先触发,p后触发。 事件冒泡当你使用事件冒泡时,子级元素先触发,父级元素后触发,即p先触发,div后触发。w3c模型w3c模型是将两者进行中和,在w3c模型中,任何事件发生时,先从顶层开始进行事件捕获,直到事件触发到达了事件源元素。