jsJavascript的事件流模型都有什么

JavaScript的事件流模型主要涉及到两个概念:事件捕获(Event Capturing)和事件冒泡(Event Bubbling)。
事件捕获:在事件发生时,事件会从顶层(如 document)向下(如某个特定的元素)逐级传递,直到找到注册事件的元素,这一过程叫做事件捕获。在事件捕获阶段,事件对象会首先被根元素捕获,然后传递给最接近事件源的子元素。
事件冒泡:如果事件处理程序没有在目标元素上被找到,或者事件处理程序被调用并返回了false(取消了事件),那么事件会从目标元素开始,向上逐级传递回根元素,这一过程叫做事件冒泡。在事件冒泡阶段,事件对象会从目标元素开始,逐级向上传递给父元素。此外,还有一个叫做"DOM0级事件模型"的概念,这是最早的事件模型,只支持冒泡阶段。在这个模型中,所有的事件都从目标元素开始,向上冒泡到根元素。现代浏览器为了兼容性,通常都支持这三种模型。然而,由于历史原因,不同的事件可能在不同的模型中表现不同。例如,focus和blur事件只冒泡而不捕获,而mouseover和mouseout事件则既冒泡又捕获。在实际开发中,可以通过设置元素的 addEventListener 方法的第三个参数来选择是否在捕获阶段或冒泡阶段注册事件处理程序。如果这个参数为 true,则在捕获阶段注册;如果为 false 或省略,则在冒泡阶段注册。

你可能感兴趣的:(javascript)