对于非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;

 

相关文章:

  • 2021-10-13
  • 2022-12-23
  • 2021-07-05
  • 2021-12-28
  • 2022-01-13
  • 2022-12-23
  • 2021-10-17
猜你喜欢
  • 2021-10-17
  • 2021-07-24
  • 2022-01-23
  • 2021-06-25
  • 2022-12-23
  • 2022-02-09
相关资源
相似解决方案