1 if (document.addEventListener) { 2 var addEvent = function(elem, type, handler) { 3 elem.addEventListener(type, handler, false) 4 } 5 var removeEvent = function(elem, type, handler) { 6 elem.removeEventListener(type, handler, false) 7 } 8 } else { 9 var addEvent = function(elem, type, handler) { 10 elem.attachEvent("on" + type, handler) 11 } 12 var removeEvent = function(elem, type, handler) { 13 elem.detachEvent("on" + type, handler) 14 } 15 } 16 17 ... 18 addEvent(elem, "click", function() { alert('hi') })
It works good in most cases, but the handler will lack this
in IE, because attachEvent
doesn’t provide this
.
Fixing this problem may look easy, but it actually isn’t, because of advanced topics like IE<8 memory leaks.
But you don’t need this
and don’t care about memory leaks, then the solution is simple and works well.