JavaScript de nulo enlace de evento entre navegadores

En el capítulo cinco de esta serie, nos lanzamos al fangoso mundo de los oyentes de eventos. En ese episodio, solo nos mojamos los pies; sin embargo, hoy, iremos un paso más allá al implementar una solución mucho más eficiente. En el camino, aprenderemos una gran cantidad de nuevas técnicas..


Screencast completo



Nuestro Código Final

 var addEvent = (función (ventana, documento) if (document.addEventListener) return function (elem, type, cb) if ((elem &&! elem.length) || elem === ventana) elem.addEventListener (type, cb, false); else if (elem && elem.length) var len = elem.length; para (var i = 0; i < len; i++ )  addEvent( elem[i], type, cb );   ;  else if ( document.attachEvent )  return function ( elem, type, cb )  if ( (elem && !elem.length) || elem === window )  elem.attachEvent( 'on' + type, function()  return cb.call(elem, window.event)  );  else if ( elem.length )  var len = elem.length; for ( var i = 0; i < len; i++ )  addEvent( elem[i], type, cb );   ;  )( this, document ); // Example Usage var lis = document.getElementsByTagName('li'); addEvent( window, 'click', function()  this.style.border = '1px solid red'; );

Tenga en cuenta que este código está ligeramente revisado, según algunos comentarios excelentes en la sección de comentarios.