event.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. window.Tracker = window.Tracker || {};
  2. Tracker.Event = function(){
  3. return {
  4. add: function( target, event, fn ){
  5. if( typeof event == "object" ){
  6. for(var name in event)
  7. this.add( target, name, event[ name ] );
  8. return ;
  9. }
  10. var call = function(){
  11. var args = [].slice.call( arguments ), e;
  12. if( ( e = args[ 0 ] ) && typeof e == "object" ){
  13. e = e || event;
  14. e.target = e.target || e.srcElement;
  15. args[ 0 ] = e;
  16. }
  17. fn.apply( target, args );
  18. };
  19. if( target.addEventListener )
  20. target.addEventListener( event, call, false );
  21. else if( target.attachEvent )
  22. target.attachEvent( "on" + event, call );
  23. },
  24. bind: function( object ){
  25. var events;
  26. object = object || {};
  27. events = object.events = {};
  28. object.on = function( name, fn ){
  29. if( typeof name == "object" ){
  30. for(var n in name)
  31. this.on( n, name[ n ] );
  32. return ;
  33. }
  34. if( events[ name ] )
  35. events[ name ].push( fn );
  36. else
  37. events[ name ] = [ fn ];
  38. };
  39. object.fire = object.f = function( name ){
  40. var args = [].slice.call( arguments, 1 ), e;
  41. if( e = events[ name ] )
  42. for( var i = 0, l = e.length; i < l; i ++ )
  43. e[ i ].apply( this, args );
  44. };
  45. return object;
  46. }
  47. }
  48. }();