事件绑定(1)

对于非IE浏览器来说,利用现代事件绑定非常方便,但是对于IE浏览器,它自身提供了专门的现代事件绑定方法,但是IE的现代事件绑定方法问题多多,而且还会导致内存泄露,所以本篇文章就是利用传统事件绑定来模拟W3C的现代事件绑定方法。直接开代码,注释非常清楚:

 1 function addEvent(obj, type, fn) {
 2     if (typeof window.addEventListener != 'undefined') {
 3         obj.addEventListener(type, fn, false);
 4     } else {
 5         //定义一个哈希表来存放事件对象
 6         obj.events = obj.events || {};
 7             
 8         //将事件函数存放在事件对象的数组中
 9         if (!obj.events[type]) {
10             obj.events[type] = [];
11             //将第一个事件函数存放在事件对象数组中的第一个位置上
12             if (obj['on' + type]) obj.events[type][0] = fn;
13         }
14         //将后面的事件函数依次存放在事件对象数组中的其他位置
15         obj.events[type][addEvent.ID++] = fn;
16         //执行事件函数
17         obj['on' + type] = function () {
18             for (var i in obj.events[type]) {
19                 obj.events[type][i]();
20             }
21         };
22     }
23 }
24 //为每个事件分配一个计数器
25 addEvent.ID = 1;
原文地址:https://www.cnblogs.com/fengyuqing/p/javascript_addEvent_1.html