ie9 以前只支持attachEvent, 而Chrome、Firefox、ie9+[①]等现代浏览器只支持addEventListener
兼容写法:
if (el.addEventListener) {
el.addEventListener('click', fn, false);
} else if (el.attachEvent) {
el.attachEvent('onclick', fn);
}
使用 attachEvent
方法有个缺点,this
的值会变成 window
对象的引用而不是触发事件的元素。
MDN 相关addEventListener文档: https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener
MDN 相关attachEvent文档:https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/attachEvent
① ie9仍有待考证是否现代浏览器,部分学者认为IE9非现代浏览器。 -