关于事件传播的三个阶段

事件传播分为三个阶段:事件捕获,目标对象本身的事件程序,事件冒泡。

事件传播的捕获阶段像反向的冒泡阶段。最先调用Window对象的捕获处理程序,接着是body对象的,再然后是 DOM 树向下,以此类推,直到调用事件目标的父元素的捕获事件处理程序。在目标对象本身上注册的捕获事件处理程序不会被调用。

addEventListener()把一个布尔值作为其第三个参数。如果这个参数是true,那么事件处理程序被注册为捕获事件处理程序,它会在事件传播的第一个阶段调用。事件冒泡得到广泛的支持,它能用在包括 IE 在内的所有浏览器中,且无论事件处理程序以哪种方式注册(除非它们被注册为捕获事件处理程序)。而事件捕获只能用于以addEventListener()注册且第三个参数是true的事件处理程序中。这意味着事件捕获无法在 IE9 之前的 IE 中使用。

查看全文