]
Netscape 定义了事件捕获,先是最顶级的元素(document)响应事件,然后逐层往下,最后到达最低层的元素。
IE 定义了事件冒泡,先是最底层的事件进行响应,然后逐层网上,最后到达document。注意先到达html元素,再到达document。
W3C取各家所长,定义了事件捕获和事件冒泡,当document发现有事件发生时,就进入了事件捕获阶段,等当事件被处理完毕后,就冒泡到回doucment。
DOM的addEventListener方法接受三个元素,第一个为所需要处理的事件,第二个参数为事件处理函数,
第三个参数为一个boolean,true时代表在捕获阶段进行事件处理,false代表在冒泡阶段进行事件处理。
我们一般使用false,这样就可以拥有和IE中的attachEvent()一样的作用。如果我们使用true,那么在IE8中不会被实现。
需要注意的是,类似element.onclick = function(){}等用法,假设我们使用事件冒泡阶段去处理事件。
相当多的浏览器支持事件冒泡和事件捕获,IE版本8及以前只支持事件事件冒泡
我们一般不使用如下方式,因为当我们制作大型网站时,往往有很多事件,我们就要在内存中维护很多这种dom及相应在js中定义的事件处理程序,这样就降低了运行速度
document.getElementById("help-btn").onclick = function(event){
openHelp();
};
document.getElementById("save-btn").onclick = function(event){
saveDocument();
};
document.getElementById("undo-btn").onclick = function(event){
undoChanges();
};
我们考虑使用这种方式
document.onclick = function(event){
//IE doesn't pass in the event object
event = event || window.event;
//IE uses srcElement as the target
? var target = event.target || event.srcElement;
switch(target.id){
case "help-btn":
openHelp();
break;
case "save-btn":
saveDocument();
break;
case "undo-btn":
undoChanges();
break;
//others?
}
};
也就是在最高层进行事件处理,我们也可以为类似的事件使用同样的方式,比如事件mousedown, mouseup, mousemove, mouseover, mouseout, dblclick, keyup, keydown, and keypress
这里需要注意mouseout和mouseover由于他们本身的特性很难使用这种方式,因为当鼠标从一个区域移出后,它很可能被认为是从子元素移往上层元素,也就是仍然处于这个区域中,事件不会被触发
http://www.nczonline.net/blog/2009/06/30/event-delegation-in-javascript/
分享到:
相关推荐
冒泡事件和事件捕获是JavaScript中处理事件传播的两种主要模型,它们定义了事件在DOM树中传播的顺序。在实际的Web开发中,深入理解这两种模型对于正确处理事件,避免潜在的问题至关重要。 冒泡事件是指当一个事件在...
javascript 中事件冒泡和事件捕获机制的详解 二者作用:描述事件触发时序问题 事件捕获:从document到触发事件的那个节点,即自上而下的去触发事件—由外到内 事件冒泡:自下而上的去触发事件—由内到外 绑定事件...
JavaScript中的事件处理机制是网页交互的核心,其中包括了两种主要的事件传播模式:事件冒泡(Bubbling)和事件捕获(Cropping)。事件冒泡是指事件从最深的节点开始,然后逐级向上传播到最外层的节点。而事件捕获则...
本文将深入探讨JavaScript事件机制,特别是事件的捕获和冒泡阶段。 首先,理解JavaScript事件的基础概念至关重要。事件是用户或浏览器在与网页交互时发生的动作,比如点击按钮、页面加载或滚动等。当这些事件发生时...
5. **总结**:事件冒泡和事件捕获是JavaScript事件模型的两个阶段,它们定义了事件如何在DOM树中传播。事件委托则是一种高效利用事件处理的策略,可以降低内存消耗,提高性能,尤其适用于动态添加或删除DOM元素的...
事件触发时序问题中的两个重要概念是事件冒泡(event bubbling)和事件捕获(event capturing)。这两个术语描述了事件流(event flow)在DOM树中的传播顺序。 事件冒泡是指当一个元素上的事件被触发后,该事件会...
事件冒泡和事件捕获是两种不同的事件处理机制,它们决定了事件如何在DOM(Document Object Model)层次结构中传播。了解这两者对于优化事件处理性能和编写高效代码至关重要。 事件冒泡是从最具体的节点(通常是DOM...
在JavaScript中,事件处理是网页交互的核心部分,而事件冒泡、事件捕获和事件委托则是JavaScript事件模型中的三个重要概念。理解这三个概念对于优化网页性能和编写高效代码至关重要。 事件冒泡是指事件从最深的节点...
在IE浏览器中,没有标准的捕获事件,只有冒泡事件处理。对于其他大多数现代浏览器,它们支持W3C标准,允许开发者在捕获阶段拦截事件。在JavaScript中,可以通过在addEventListener方法中设置第三个参数为true来指定...
1、冒泡事件: 事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。通俗来讲就是,就是当设定了多个div的嵌套时;即建立了父子关系,当父div与子div共同加入了onclick事件时,当触发了子div...
总之,JavaScript的事件处理是构建动态网页的重要手段,熟练掌握事件绑定、事件冒泡、事件捕获和事件执行顺序能帮助开发者编写更高效、更易于维护的代码。通过实践和不断学习,可以更深入地理解和运用这些概念。
事件冒泡、事件捕获和事件委托是JavaScript事件模型中的三个重要概念。 首先,事件捕获是一种事件处理机制,它从DOM树的根节点(window对象)开始,向下遍历到目标元素。这种机制使得事件首先在最不具体的节点(即...
在JavaScript中,有多种事件模型,包括事件冒泡(Bubble Phase)和捕获阶段(Capture Phase)。事件冒泡是最常见的一种,它始于事件目标元素(例如,用户点击的按钮),然后依次经过其所有父元素,直到到达文档的根...
本文实例讲述了JS html事件冒泡和事件捕获操作。分享给大家供大家参考,具体如下: 今天学习了事件冒泡和捕获,记录一下。 1.冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发...
(1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。 IE 5.5: div -> body -> document IE 6.0: div -> body -> html -> document Mozilla 1.0: div -> body -> ...
事件模型分为三个阶段:冒泡、目标和捕获。在IE浏览器中,事件通常从最具体的元素(如一个按钮)开始,然后向上冒泡到更不具体的元素(如其父元素),直到到达文档的根节点。然而,通过事件捕获,我们可以选择在事件...