// 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);