W3C DOM
里用来新增触发事件的函数叫AddEventListener
,不过我一直不知道这个函数的第三个参数是要做什么用的,总是随便设,也没发现差异再哪,前两天看ppk on javascript
终于看到说明了,至于很久以前就有的DOM的标准文件,我其实根本没去找过这个参数的资讯。
这个参数叫做useCapture
,是一个boolean值,就是true or
false,如果送出true的话就是浏览器会使用Capture方式,false的话是Bubbling,只有在特定状况下才会有影响,通常建议是
false,而会有影响的情形是目标元素(target element)有祖先元素(ancestor
element),而且也有同样的事件对应函数,我想,看图会比较清楚。
像这张图所
显示的,我的范例有两层div元素,而且都设定有click事件,一般来说,如果我在内层蓝色的元素上click不只会触发蓝色元素的click事件,还
会同时触发红色元素的click事件,而useCapture这个参数就是在控制这时候两个click事件的先后顺序。
如
果是false,那就会使用bubbling,他是从内而外的流程,所以会先执行蓝色元素的click事件再执行红色元素的click事件,如果是
true,那就是capture,和bubbling相反是由外而内,会先执行红色元素的click事件才执行蓝色元素的click事件。
附上两个范例, capture
和bubbling
,两个档案只有差在此一参数不同,可以发现事件的发生顺序不一样了。
那如果不同层的元素使用的useCapture不同呢?
就是会先从最外层元素往目标元素寻找设定为capture的事件,到达目标元素执行目标元素的事件后,再寻原路往外寻找设定为bubbling的事件。
分享到:
相关推荐
第三个参数为 useCapture,本文就讲解它。 代码如下: ”outDiv”> ”middleDiv”> ”inDiv”>请在此点击鼠标。 ”info”> 代码如下: var outDiv = document.getElementById(“outDiv”); var middleDiv ...
true的触发顺序总是在false之前;如果多个均为true,则外层的触发先于内层;如果多个均为false,则内层的触发先于外层
函数名,记住不要跟括号最后一个参数是个布尔值,表示该事件的响应顺序,下面重点介绍一下addEventListener的第3个参数(useCapture)。 userCapture若为true,则浏览器采用Capture,若为false则采用bubbing方式。建议用...
第一个参数为事件类型 ,第二个为事件程序 ,第三个 false为事件冒泡,true为事件捕获 [IE] attachEvent(‘onclick’,function(){alert(‘Hello World’)}) //IE添加事件; 第一个参数为事件类型(需要加...
下面这个图能大概的说明整个过程: (from W3C) 如果想创建一个捕捉事件,在支持W3C 事件模型的浏览器中,将addEventListener的第三个参数设为true就好了。例如: 代码如下: document.getElementById(‘foo’)....
第三种:当函数fn有参数的情况下使用匿名函数来传参: obj.onclick = function(){fn(param)}; function fn(param){ //do something.. } 不能够这样写:错误写法:obj.onclick= fn(param): 因为这样写函数会立即...
下面我用一个图来直观表示: 冒泡型事件我们在工作中可能会比较多遇到,但捕获型事件怎样才会执行到呢,如果我们想要在非 IE 浏览器中 要创建捕获型事件,只需将 addEventListener 的第三个参数设为true就好了。...
为了安全性,建议将第三个参数始终设置为false; MSIE的方法就是定义元素的on...事件,它就是W3C的方法中的事件参数前加一个“on”。学习Javascript比较快速有效的方法是先熟悉一些基本概念,然后找几个别人设计好...
这是第三个li 解答一:bind,将当前匿名函数指向this,将i当参数传入 var init = function(){ var obj = document.getElementById('text'); for(var i=0;i<obj.children.length;i++){ obj.children[i]....
DOM2级的事件处理程序操作函数对:addEventListener和removeEventListener的第三个参数则把这种事变成了DIY,这是一种妥协,同时让初学者认为dom的管理一片混乱。 var btn = document.getElementById("btn");
虽然对于微软的模型我不是很...你给他三个参数:事件类型,要执行的函数和一个布尔值(true或者false)我一会再解释。把我们熟知的doSomething()函数注册到一个元素的onclick事件上,你可以这样做: element.addEventLis
addEventListener的第三个参数 浏览器事件环机制(Node.js事件环基本没有问?) JavaScript异步编程(掌握原理) promise async/await(generator) setTimeout 原型和原型链 跨域 性能优化 webpack 项目 谈谈你对前端工程...
标准参考 根据 W3C DOM 2 Events 描述,EventTarget 接口被所有支持... 实现 Event 接口的对象一般作为第一个参数传入事件处理函数,以用来提供当前事件相关的一些信息。 DOM 2 事件模型允许 DOM 实现支持事件的多模块
通过 RemoteObject 进行调用虽然简单,但存在不少问题:首先,RemoteObject 是一个 Dynamic Class,Flex Builder 的编译器无法替我们检查参数类型和参数个数,这样,在编写 ActionScript 代码时极易出错。...
超级播放器专业版v1.0.8,苹果...有人可能不喜欢使用播放器的线路切换功能,那么你可以在接口地址中加上from=json编号,json编号就是json接口的序列,从0开始,那么第一条json就0第二条1第三条2...,例如https://域名....
BlazeDS 将读取 services-config.xml 配置文件,该配置文件又引用了 remoting-config.xml、proxy-config.xml 和 messaging-config.xml 这 3 个配置文件,所以,一共需要 4 个配置文件。 由于 BlazeDS 需要将 Java ...
大多数人第一开始的感觉可能就是,每个li上边都添加一个呗,那要是这样的话,估计面试的时候就会GG了,这里就是撤出了我们的事件冒泡和捕获机制,以及事件委托机制,对于上边这些,我们慢慢来看. 首先说一下事件冒泡和...
9、getAllExpandRowIndex、getExpandRowIndex、fixDetailRowWidth 这三个方法联合使用可解决detailView视图下列拖拽时显示错位问题。 10、修复datagrid 的rowEditing编辑风格在没有数据的datagrid中增加数据后,再...
纯css,js 前端音乐播放器,界面UI比较好我特别喜欢,适合二次开发,调用了网易云第三方接口以及将歌曲链接导出可以访问的歌曲链接,实现了异步歌曲搜索播放,以及异步显示歌词等.结合html5 新特性实现歌曲暂停,下一首,快...