// addEventListener polyfill 1.0 / Eirik Backer / MIT Licence (function(win, doc){ if(win.addEventListener)return; //No need to polyfill function docHijack(p){var old = doc[p];doc[p] = function(v){return addListen(old(v))}} function addEvent(on, fn, self){ return (self = this).attachEvent('on' + on, function(e){ var e = e || win.event; e.preventDefault = e.preventDefault || function(){e.returnValue = false} e.stopPropagation = e.stopPropagation || function(){e.cancelBubble = true} fn.call(self, e); }); } function addListen(obj, i){ if(i = obj.length)while(i--)obj[i].addEventListener = addEvent; else obj.addEventListener = addEvent; return obj; } addListen([doc, win]); if('Element' in win)win.Element.prototype.addEventListener = addEvent; //IE8 else{ //IE < 8 doc.attachEvent('onreadystatechange', function(){addListen(doc.all)}); //Make sure we also init at domReady docHijack('getElementsByTagName'); docHijack('getElementById'); docHijack('createElement'); addListen(doc.all); } })(window, document); addEventListener Polyfill
Chris Coyier on
It doesn’t work – “unsupported removeEventListener”.
I guess it is only a polyfill for addEventListener, not for removeEventListener ;
But you should be able to add this feature in this example pretty easily I guess !
I thought I would give my to pennies, for those looking for a polyfill for both add and remove EventListener, try the MDN website:
https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener$revision/650019#Compatibility
what about this?
is more simple but i think it will work on ie8+