在元素上写事件和addEventListener()的区别

  1. onclick添加事件不能绑定多个事件,后面绑定的会覆盖前面的。而addEventListener能添加多个事件绑定,按顺序执行。
  2. onclick只能冒泡,addEventListener()可以得到捕获or冒泡。
  3. addEventListener方式,不支持低版本的IE。(attachEvent 支持IE)。
  4. 普通方式绑定事件后,不可以取消。addEventListener绑定后则可以用 removeEvenListener 取消。
  5. addEventListener 是W3C DOM 规范中提供的注册事件监听器的方法。
addEventListener用法:

语法:

element.addEventListener( type , listener , useCapture )

- - 添加事件监听

- - ​type​: 事件类型字符串,不使用“on”前缀

- - ​callback​:事件处理程序(回调函数)

- - ​useCapture​:可选参数,是否使用事件捕获的方式处理事件。不传递时,默认为false,表示不使用事件捕获(使用事件冒泡),如果需要显示事件捕获,则显示传递true。

如果你对事件捕获与冒泡不太了解请看:​​JS事件流介绍以及阻止事件冒泡​

示例:

document.getElementById("item").addEventListener( 'click' , (event) => {
console.log(event)
}, false )

addEventListener 第三个参数:

为 true 时,浏览器采用Capture(捕捉)

为 false 时,浏览器采用bubbing(冒泡)-- 建议使用!

addEventListener兼容写法:

IE9之前浏览器使用element.attachEvent(type, callback)

attachEvent(type, callback)

type:事件类型字符串,使用“on”前缀

callback:事件处理程序(回调函数)

注意:因为IE9之前只有事件捕获,没有事件冒泡,所有attachEvent没有第三个参数。