关于addEventListener和attachEvent的初步探讨
来源:互联网 发布:2017日本就业率数据 编辑:程序博客网 时间:2024/05/01 20:03
关于addEventListener和attachEvent
IE不对应addEventListener,只能使用attachEvent,所以首先需要判断你的浏览器对应的是哪个事件函数
if (window.addEventListener) {//for W3C DOM
} else if (window.attachEvent) {//for IE
} else
}
接下来,让我们回到事件函数上来。
假设你想在窗口被加载的时候执行一个initOther的函数。
通常,我们会这么做
function initOther () {
}
window.onload =initOther;
但是,如果你的onload事件已经绑定了其他的方法,那么你绑定的那个方法就不会再被执行了。
比如:当你在绑定了initOther()方法之后另外在body上绑定了initMain()方法的话,initMain()方法就不会被执行!
<bodyonload="initMain()">...</body>
我们希望的是这两个函数都被绑定到onload事件上,那么我们应该怎么做呢?
对,就是使用window.addEventListener/window.attachEvent方法
if (window.addEventListener) {//for W3C DOM
} else if (window.attachEvent) {//for IE
} else
}
这里有个重点:
1.
可以绑定多个方法,它们是有顺序的。根据你代码中add…的顺序来定。
2.
你也可以绑定多个方法,但是IE很调皮,他会随机选定执行顺序。
细心的人会发现window.addEventListener的方法注册变量有3个。
第一个是要注册的事件名
第二个是要绑定的方法
那么第三个是什么呢?
探讨一下
这个参数叫做useCapture
我们来想象一下,架设有一大一小2个箱子,大箱子是红色的,小箱子是蓝色的。小箱子套在大箱子里面。形成父子关系。再假设他们都设定有click事件,一碰就会动。
那么,如果我在蓝色小箱子上click不只会触发蓝色小箱子的click
如果是false,那就会使用bubbling,他是从内而外的流程,所以会先触发蓝色小箱子的click事件再执行红色大箱子的click事件,如果是true,那就是capture,和bubbling相反是由外而内,会先执行红色大箱子的click事件才执行蓝色小箱子的click事件。
那如果不同层的元素使用的useCapture不同呢?
就是会先从最外层元素往目标元素寻找设定为capture的事件,到达目标元素执行目标元素的事件后,再寻原路往外寻找设定为bubbling的事件。
(转自:冷月听雨声)- 关于addEventListener和attachEvent的初步探讨
- 关于addEventListener和attachEvent的初步探讨
- 关于attachEvent和addEventListener
- addEventListener和attachEvent的区别
- addEventListener和attachEvent的区别
- 关于element.addEventListener和element.attachEvent使用
- 关于attachEvent和addEventListener事件监听
- attachEvent和addEventListener方法的使用
- window.attachEvent和window.addEventListener的区别
- addEventListener和attachEvent的区别·
- addEventListener()、attachEvent()和removeEventListener()、detachEvent()的区别?
- Javascript addEventListener和attachEvent的区别
- attachEvent和addEventListener
- attachEvent和addEventListener使用方法
- attachEvent和addEventListener 使用方法
- attachEvent和addEventListener
- attachEvent和addEventListener
- attachEvent 和addEventListener
- get out & clean
- 微博上对乔布斯的评价
- Hibernate一对一,一对多懒加载的要求
- 编写高质量C语言代码--assert yourself
- WindowsPhone程序运行时屏幕常亮
- 关于addEventListener和attachEvent的初步探讨
- Qt中可以把一个复杂对话框分为几部分的组件类
- aop的概念、原理、应用的地方
- SDK,API,MFC 三者的区别
- w3shool学习1-PHP 语法
- Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常 .
- latex输入单双引号
- 编程之美 2.1求二进制数中1的个数
- latex输入3.3.1类型的标题