1. addEventListener()添加的匿名函数将无法移除
var btn = document.getElementById("myBtn");
btn.addEventListener("click", function(){
alert("Hello");
}, false);//绑定事件
btn.removeEventListener("click", function(){
alset("Hello");
}, false);//移除事件
//使用这种方法移除事件会失败,必须使用命名函数才有效:
var btn = document.getElementById("myBtn");
var handler = function(){
alert("Hello");
}
btn.addEventListener("click", handler, false);
btn.removeEventListener("click", handler, false);
2. IE中的事件处理程序的this
var btn = document.getElementById("myBtn");
btn.attachEvent("onclick", function(){
alert(this === window); //true
});
//在使用attachEvent()方法的情况下,事件处理程序会在全局作用域中运行,因此this等于window;而在使用DOM0级方法的情况下,事件处理程序会在其所属元素的作用域内运行。
因此,获取事件对象应该采用如下通用方法:
var evt = evt || window.event
获取事件的目标元素应采用:
var target = evt.srcElement || evt.target