文章出處
文章列表
對于非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;
文章列表
全站熱搜