Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 1807

Show
Ignore:
Timestamp:
07/11/05 03:46:22 (3 years ago)
Author:
sam
Message:

Update Railties to Prototype 1.3.1

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/railties/html/javascripts/prototype.js

    r1737 r1807  
    1 /*  Prototype JavaScript framework, version 1.3.0 
     1/*  Prototype JavaScript framework, version 1.3.1 
    22 *  (c) 2005 Sam Stephenson <sam@conio.net> 
    33 * 
     
    1212 
    1313var Prototype = { 
    14   Version: '1.3.0', 
     14  Version: '1.3.1', 
    1515  emptyFunction: function() {} 
    1616} 
     
    267267    var event = Ajax.Request.Events[readyState]; 
    268268 
    269     if (event == 'Complete' && this.responseIsFailure()
     269    if (event == 'Complete'
    270270      (this.options['on' + this.transport.status] 
    271        || this.options.onFailure 
     271       || this.options['on' + this.responseIsSuccess() ? 'Success' : 'Failure'] 
    272272       || Prototype.emptyFunction)(this.transport); 
    273273 
    274     (this.options['on' + event] || Prototype.emptyFunction)(this.transport);     
     274    (this.options['on' + event] || Prototype.emptyFunction)(this.transport); 
     275 
     276    /* Avoid memory leak in MSIE: clean up the oncomplete event handler */ 
     277    if (event == 'Complete') 
     278      this.transport.onreadystatechange = Prototype.emptyFunction; 
    275279  } 
    276280}); 
     
    293297    this.options.onComplete = (function() { 
    294298      this.updateContent(); 
    295       onComplete(this.transport);       
     299      onComplete(this.transport); 
    296300    }).bind(this); 
    297301 
     
    890894  }, 
    891895 
     896  observers: false, 
     897   
     898  _observeAndCache: function(element, name, observer, useCapture) { 
     899    if (!this.observers) this.observers = []; 
     900    if (element.addEventListener) { 
     901      this.observers.push([element, name, observer, useCapture]); 
     902      element.addEventListener(name, observer, useCapture); 
     903    } else if (element.attachEvent) { 
     904      this.observers.push([element, name, observer, useCapture]); 
     905      element.attachEvent('on' + name, observer); 
     906    } 
     907  }, 
     908   
     909  unloadCache: function() { 
     910    if (!Event.observers) return; 
     911    for (var i = 0; i < Event.observers.length; i++) { 
     912      Event.stopObserving.apply(this, Event.observers[i]); 
     913      Event.observers[i][0] = null; 
     914    } 
     915    Event.observers = false; 
     916  }, 
     917 
    892918  observe: function(element, name, observer, useCapture) { 
    893919    var element = $(element); 
    894920    useCapture = useCapture || false; 
    895921     
    896     if (name == 'keypress') { 
    897       if (navigator.appVersion.indexOf('AppleWebKit') > 0) { 
    898         element.addEventListener('keydown', observer, useCapture); 
    899         return; 
    900       } 
    901       if (element.addEventListener) { 
    902         element.addEventListener('keypress', observer, useCapture); 
    903       } else if (element.attachEvent) { 
    904         element.attachEvent('onkeydown', observer); 
    905       } 
    906     } else { 
    907       if (element.addEventListener) { 
    908         element.addEventListener(name, observer, useCapture); 
    909       } else if (element.attachEvent) { 
    910         element.attachEvent('on' + name, observer); 
    911       } 
    912     } 
     922    if (name == 'keypress' && 
     923        ((navigator.appVersion.indexOf('AppleWebKit') > 0)  
     924        || element.attachEvent)) 
     925      name = 'keydown'; 
     926     
     927    this._observeAndCache(element, name, observer, useCapture); 
    913928  }, 
    914929 
     
    917932    useCapture = useCapture || false; 
    918933     
    919     if (name == 'keypress') { 
    920       if (navigator.appVersion.indexOf('AppleWebKit') > 0) { 
    921         element.removeEventListener('keydown', observer, useCapture); 
    922         return; 
    923       } 
    924       if (element.removeEventListener) { 
    925         element.removeEventListener('keypress', observer, useCapture); 
    926       } else if (element.detachEvent) { 
    927         element.detachEvent('onkeydown', observer); 
    928       } 
    929     } else { 
    930       if (element.removeEventListener) { 
    931         element.removeEventListener(name, observer, useCapture); 
    932       } else if (element.detachEvent) { 
    933         element.detachEvent('on' + name, observer); 
    934       } 
    935     } 
    936   } 
    937 }); 
     934    if (name == 'keypress' && 
     935        ((navigator.appVersion.indexOf('AppleWebKit') > 0)  
     936        || element.detachEvent)) 
     937      name = 'keydown'; 
     938     
     939    if (element.removeEventListener) { 
     940      element.removeEventListener(name, observer, useCapture); 
     941    } else if (element.detachEvent) { 
     942      element.detachEvent('on' + name, observer); 
     943    } 
     944  } 
     945}); 
     946 
     947/* prevent memory leaks in IE */ 
     948Event.observe(window, 'unload', Event.unloadCache, false); 
    938949 
    939950var Position = {