标准的事件绑定函数是 addEventListener
函数,而 IE 浏览器(IE9 以下)则是用 attachEvent
。
// 实现一个通用的,跨多种浏览器的时间绑定函数function addEvent(el, type, fn) { if (window.addEventListener) { el.addEventListener(type, fn, false); } else if (window.attachEvent) { el.attachEvent('on' + type, fn); } else { el['on' + type] = fn; }}
IE 事件处理函数中的 this
在 IE 事件处理函数当中 this
的值并不等于被绑定元素,而是等于 window
对象。
var btn = document.getElementById("myButton");btn.attachEvent("onclick", function(event) { alert(this === window); // true alert(this.id) // undefined});
而在标准事件绑定当中,this
的值等于被绑定的元素。
var btn = document.getElementById("myButton");btn.addEventListener("click", function(event) { alert(this === btn); // true alert(this.id); // myButton alert(this === event.currentTarget); // true});