欢迎您访问我爱IT技术网,今天小编为你分享的javascript教程:【addEventListener()第三个参数useCapture (Boolean)详细解析】,下面是详细的讲解!
addEventListener()第三个参数useCapture (Boolean)详细解析
举例
<div id="div1">
<div id="div2">
<div id="div3">
<div id="div4">
</div>
</div>
</div>
</div>
如果在 d3 上点击鼠标,事件流是这样的:
捕获阶段 在 div1 处检测是否有 useCapture 为 true 的事件处理程序,若有,则执行该程序,然后再同样地处理 div2。
目标阶段 在 div3 处,发现 div3 就是鼠标点击的节点,所以这里为目标阶段,若有事件处理程序,则执行该程序,这里不论 useCapture 为 true 还是 false。
冒泡阶段 在 div2 处检测是否有 useCapture 为 false 的事件处理程序,若有,则执行该程序,然后再同样地处理 div1。
addEventListener 有三个参数:第一个参数表示事件名称(不含 on,如 "click");第二个参数表示要接收事件处理的函数;第三个参数为 useCapture,本文就讲解它。
<div id="outDiv">
<div id="middleDiv">
<div id="inDiv">请在此点击鼠标。</div>
</div>
</div>
<div id="info"></div>
var outDiv=document.getElementById("outDiv");
var middleDiv=document.getElementById("middleDiv");
var inDiv=document.getElementById("inDiv");
var info=document.getElementById("info");
outDiv.addEventListener("click", function () { info.innerHTML +="outDiv" + "<br>"; }, false);
middleDiv.addEventListener("click", function () { info.innerHTML +="middleDiv" + "<br>"; }, false);
inDiv.addEventListener("click", function () { info.innerHTML +="inDiv" + "<br>"; }, false);
上述是我们测试的代码,根据 info 的显示来确定触发的顺序,有三个 addEventListener,而 useCapture 可选值为 true 和 false,所以 2*2*2,可以得出 8 段不同的程序。
•全为 false 时,触发顺序为:inDiv、middleDiv、outDiv;
•全为 true 时,触发顺序为:outDiv、middleDiv、inDiv;
•outDiv 为 true,其他为 false 时,触发顺序为:outDiv、inDiv、middleDiv;
•middleDiv 为 true,其他为 false 时,触发顺序为:middleDiv、inDiv、outDiv;
•……
最终得出如下结论:
•true 的触发顺序总是在 false 之前;
•如果多个均为 true,则外层的触发先于内层;
•如果多个均为 false,则内层的触发先于外层。
关于addEventListener()第三个参数useCapture (Boolean)详细解析的用户互动如下:
相关问题:一个javascript的简单问题。。
答:addEventListener是在 FireFox 上的用法。 addEventListener的参数一共有三个,语法为...表示该事件的响应顺序,下面重点介绍一下addEventListener的第3个参数(useCapture)... >>详细
相关问题:addEventListener和普通.onclick的区别
答:addEventListener是在 FireFox 上的用法。 addEventListener的参数一共有三个,语法为: element.addEventListener(type,listener,useCapture) 详解 其中element是要绑定函数的对象。 type是事件名称,要注意的是"onclick"要改为"click","onblur... >>详细
相关问题:AS3.0 addEventListener()这个方法的完整理写法,...
答:共5个参数,解释如下: /** * 为 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。可以为特定类型的事件、阶段和优先级在显示列表中的所有节点上注册事件侦听器。 * @param type 事件的类型 * @param listener 处理事件的... >>详细
- 【firefox】firefox浏览器不支持innerText的解决
- 【Extjs】Extjs学习过程中新手容易碰到的低级错误
- 【clearInterval】js clearInterval()方法的定义
- 【ComboBox】ComboBox 和 DateField 在IE下消失的
- 【ajax】用js来解决ajax读取页面乱码-页面乱码
- 【addEventListener】addEventListener和attachEv
- 【dom】javascript dom追加内容实现示例-追加内容
- 【has】基于jquery的has()方法以及与find()方法以
- 【browser】jQuery下通过$.browser来判断浏览器.-
- 【extjs】Extjs入门之动态加载树代码-动态加载树
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
