addEventListener和attachEvent主要有几个区别

Posted fudo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了addEventListener和attachEvent主要有几个区别相关的知识,希望对你有一定的参考价值。

addEventListener和attachEvent主要有几个区别

1. 参数个数不相同,这个最直观,addEventListener有三个参数,attachEvent只有两个,attachEvent添加的事件处理程序 只能发生在冒泡阶段,addEventListener第三个参数可以决定添加的事件处理程序是在捕获阶段还是冒泡阶段处理(我们一般为了浏览器兼容性都 设置为冒泡阶段)

2. 第一个参数意义不同,addEventListener第一个参数是事件类型(比如click,load),而attachEvent第一个参数指明的是事件处理函数名称(onclick,onload)

3. 事件处理程序的作用域不相同,addEventListener得作用域是元素本身,this是指的触发元素,而attachEvent事件处理程序会在全局变量内运行,this是window,所以刚才例子才会返回undefined,而不是元素id

4. 为一个事件添加多个事件处理程序时,执行顺序不同,addEventListener添加会按照添加顺序执行,而attachEvent添加多个事件处理 程序时顺序无规律(添加的方法少的时候大多是按添加顺序的反顺序执行的,但是添加的多了就无规律了),所以添加多个的时候,不依赖执行顺序的还好,若是依 赖于函数执行顺序,最好自己处理,不要指望浏览器

以上是关于addEventListener和attachEvent主要有几个区别的主要内容,如果未能解决你的问题,请参考以下文章

attachEvent和addEventListener

addEventListener和attachEvent的区别(转载)

JavaScript中的attachEvent和addEventListener

js 添加事件 attachEvent 和 addEventListener

addEventListener和attachEvent以及element.onclick的区别

addEventListener和attachEvent的区别