IE 与火狐浏览器在事件的区别
IE 支持绑定事件为attachEvent 删除事件 detachEvent
firefox 绑定事件 adEventListener 删除事件为 removeEventListener
它们都可以绑定多个事件,firefox 是按照绑定顺序来进行执行的,IE是从后向前来执行
firefox 在绑定事件的时候 有三个参数 最后一个参数是布尔类型的 当为false时 在冒泡阶段调用事件处理程序 ,当为true时 在捕获阶段调用
事件处理程序 。而IE 只有两个参数 ,一个是绑定的事件类型 ,一个是事件的处理程序函数 只有在冒泡阶段时调用事件处理程序。
绑定事件处理程序时,最好用一个变量来表示。否则在移除事件时程序是不执行的。只因绑定事件处理程序它是一个匿名函数。
firefox 和IE 绑定事件时还有另一个区别就是:IE 绑定事件的时候前面会加on 而firefox 而不用添加。
跨浏览器进行事件绑定
在这里我们定义一个EventUtil工具类,里面有添加事件和移除事件的方法 首先创创建第一个添加事件的方法addHandler(),里面传递有三个参数,绑定事件的元素,事件类型 ,事件处理程序(指的是一个变量函数) ,它的职现是区分使用DOM0级方法,DOM3级方法、和IE 级方法。第二个移除事件的方法removeHandler与addHandler方法相反,它也接收三个参数 和添加事件的参数相同。也是对 不同DOM级别进行区分和处理。区分不同级别的DOM 时我们使用能力检测的方法进以区分。
var EventUtil= {
addHandler(element,type,handler){
if(element.addEventListener){
element.addEventListener(type,handler,false);
}else if(element.attachEvent){
element.attachEvent("on"+type,handler);
} else{
element["on"+type]=handler;
}
},
removeHandler(element,type,handler){
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.detachEvent){
element.detachEvent("on"+type,handler);
} else{
element["on"+type]=null;
}
}
};