兼容8事件绑定与解绑addEventListener、removeEventListener和ie的attachEvent、detachEvent

时间:2021-01-09 19:29:49
;(function(){
// 事件绑定
bindHandler = (function() {
if (window.addEventListener) {// 标准浏览器
return function(elem, type, handler) {
// elem:DOM节点 type:事件类型 handler:事件处理函数
// 最后一个参数为true:在捕获阶段调用事件处理程序;为false:在冒泡阶段调用事件处理程序。注意:ie没有这个参数
elem.addEventListener(type, handler, false);
}
}
else if (window.attachEvent) {// IE浏览器
return function(elem, type, handler) {
elem.attachEvent(
"on" + type, handler);
}
}
}());

// 事件解绑
removeHandler = (function() {
if (window.removeEventListener) {// 标准浏览器
return function(elem, type, handler) {
elem.removeEventListener(type, handler,
false);
}
}
else if (window.detachEvent) {// IE浏览器
return function(elem, type, handler) {
elem.detachEvent(
"on" + type, handler);
}
}
}());
}());

  以上便是已封装好了的兼容ie8的事件绑定与解绑函数。方法比较简单,不需要特殊说明。

  第一行和最后一行,有些童鞋可能不太理解。用一个匿名函数包裹是为了避免污染命名空间。开头一个分号是为了区分代码段。这样可以使代码清晰、简明、便于维护。