· Ensure `Element#update` works with string content that includes a LINK tag in Internet Explorer.
· Treat a 304 HTTP status as a successful response.
· Handle sparse arrays properly in `Array#_each` to match behavior with browsers' built-in `Array#forEach` (and ES5).
· Make `Event.extend` work with legacy IE events in IE 9.
· Stop appending `&_=` to the parameters for non-GET Ajax requests in Safari. We no longer support any version of Safari for which this is necessary.
· Ensure `Form.focusFirstElement` doesn't raise an exception on forms with no fields.
· Define a `relatedTarget` property on extended mouseenter/mouseleave events in IE's legacy event system.
· Fix odd behavior with `new Element('select')` in IE6-7.
· Extend BUTTON elements with everything defined in Form.Element.Methods. Ensure BUTTON elements are traversed in Form.getElements and serialized in Form.serialize.
· Ensure Object.isFunction returns `false` for RegExp objects.
· Revert Opera-specific behavior for calling Element#getStyle with (left|right|top|bottom).
· Fix issue with Event#isMiddleClick and #isRightClick on Safari and Chrome.
· Fix issue where an Ajax request in IE sometimes returns 1223 instead of 204 as the status code.
· Add Object.isDate.
· Handle cases where `document` or `document.documentElement` is passed into Element#getOffsetParent. Fixes IE errors with many layout/positioning methods.
· Wrap `element` in `$` for Element#cumulativeOffset, #viewportOffset, #positionedOffset, and #getOffsetParent.
· This long-delayed version includes full support for Internet Explorer 9.
· Avoid triggering a warning when Java is disabled in IE8.
· Simplify String#(un)escapeHTML and remove their DOM dependencies.
· Update UnittestJS. Modifiy test template accordingly.
· Remove redundant if statement in Element#readAttribute.
· Add missing semicolons.
· Remove expensive (for such low-level method) internal 'getClass' in favor of plain string comparison
· Fix 'PeriodicalExecuter' so that it no longer suppresses exceptions.
· Fix issue related to escaping of selectors for querySelectorAll.
· Fixed a variety of non-ASCII chars and similar
· Add Chrome 1+ to the list of supported browsers.
· Fix 'Template#evaluate' "eating" previous character if 'null' was returned from 'toTemplateReplacements' function.
· Make sure (deficient) APPLET, OBJECT and EMBED elements are extended with simulated methods in IE8. Return early if '_extendedByPrototype' is present on an element.
· Replace array creation and 'Array#include' with a more efficient 'RegExp#test'.
· Reorganize the way 'ElementExtensions' are defined. Make sure elements used in SpecificElementExtensions are cleaned up.
· Make sure $A works with primitive values.
· Do not browser sniff when forking 'unmark' function in selector suite. Instead use a proper test - PROPERTIES_ATTRIBUTES_MAP.
· Do not use short-hand element methods notation (@element.getStyle() -> Element.getStyle(@element)) for performance reasons. Do not use '$A' and 'Array.prototype.shift' when 'Array.prototype.slice' can be used instead.
· 'Prototype.Browser.Opera' now uses stronger inference and is determined by [[Class]] of 'window.opera' being - "Opera".
· Fix error in event.js which prevented attaching more than one responder for an event name/element combination.
· Do not sniff when testing for IE's proprietary mouseenter/mouseleave events support. Use more robust inference instead.
· Use 'Prototype.emptyFunction' consistently throughout unit tests.
· deprecation extension: mark Array#reduce() as removed.
· 'Form.serialize' now works safely with forms that have "length"-named elements.
· 'Element#update' now takes care of SCRIPT elements in IE.
· Remove unused local variables from 'Element.extend'. Fix one of the form tests to remove '_extendedByPrototype' by setting it to 'undefined' rather than 'false' ('_extendedByPrototype' being 'false' does not force 'Element.extend' to re-extend element).
· Make test for 'escapeHTML'/'unescapeHTML' more strict. (Chrome 1.x escapes "<" and "&" with 'innerHTML', but not ">")
· Remove another sniffing from one of DOM tests. Fixes last IE8 failure.
· 'Element.extend' now takes care of IE8 bug when HTMLAppletElement and HTMLObjectElement objects do not inherit from 'Element.prototype'.
· Fix DOM tests to use proper feature test when testing 'setOpacity'
· Fix another failure in IE8, 'for'/'htmlFor' {get/set}Attribute translation.
· Fix 'Element#writeAttribute' and 'Element#readAttribute' failures in IE8 due to lack of proper feature testing.
· Remove sniffing from one of the DOM tests, which produced failures in IE8.
· Fix 'Form.reset' test where 'respondsTo' wouldn't detect a method due to typeof returning "object" (rather than "function") in IE
· Remove Array#reduce which currently overrides native 'reduce' in clients implementing JS1.8, e.g. Firefox 3+
· Make sure try/catch/finally is used instead of try/finally for clients without support for the latter one (e.g. Blackberry, IE)
· Use 'in' operator when accessing property of a nodelist to prevent Safari <=2.0.4 from crashing
· Add Element#clone as a safe wrapper of native 'cloneNode'.
· Add tests to ensure IE8 properly assigns a class name in the 'Element' constructor.
· Remove sniffing from 'Element' when detecting broken 'setAttribute' in IE.
· Remove sniffing from 'Element.update' branching in favor of feature detection.
· Remove sniffing when branching 'escapeHTML' and 'unescapeHTML'.
· Redefine Element#down in IE 6-7 to avoid extending all descendants when no selector is given.
· Reverse the definitions of Event#pointer(X|Y) and Event#pointer to prevent unnecessary computation.
· Add first-class support for 'mouseenter' and 'mouseleave' events in non-IE browsers (IE supports them natively).
· Make sure '_extendedByPrototype', '_countedByPrototype', and 'prototypeUID' node expandos are accessed with 'typeof' to prevent errors in some environments.
· Fix issue where Opera 9.x returns incorrect results on certain Selector queries with descendant combinators.
· Null out references to elements in cache on page unload. Need this in addition to the Event#stopObserving calls to clean up memory leaks.
· Ensure 'toString' and 'valueOf' properties are copied to a subclass only when necessary in IE6.
· Make sure 'getAttribute' is used without flag when accessing the "type" attribute of an iframe (IE throws error otherwise).
· String#gsub should escape RegExp metacharacters when the first argument is a string.
· Fix order of replacement in String#unescapeHTML
· Fix issue where a Selector query rooted on a node that had not been attached to the document failed in IE.
· Fix Selector to match elements with attributes containing hyphens.
· Make sure Form.reset always returns a reference to the receiver element.
· Escape ":" and "." characters when doing contextual CSS selection in browsers that support querySelectorAll.
· Ensure the 'target' property on events is never undefined in IE.
· Ensure Element#descendants always returns an array.
· Don't switch fixed position elements to absolute in Element.getDimensions
· Avoid infinite loops when calling String#sub with empty pattern
· Switch to Sprockets for building the Prototype distfiles.
· Switch Object.is(Array|String|Number) to use the vastly-superior approach discovered by Juriy.
· Further fix to ensure Object.is(String|Number) do not throw exceptions on host objects in IE.
· Ensure Enumerable#grep can handle strings with RegExp metacharacters.
· Switch to the "doScroll approach" for the dom:loaded custom event.
· Optimize document.viewport.get(Dimensions|Width|Height).
· Fix issue where Object#isString and Object#isNumber return false for String and Number "wrapper" objects.
· Set document.loaded = true before firing dom:loaded custom event.
· Allow Element#store to accept an object containing several key/value pairs.
· Change Element#store to return the element itself (for chaining).
· Add non-bubbling custom events. A new final argument to Element#fire defaults to 'true'; pass 'false' to prevent bubbling when firing a custom event.
· Alter event system to use new element storage API rather than have its own global hashtable.
· Add Element#store and Element#retrieve for safe, hash-backed storage of element metadata (no memory leaks). Also add Element#getStorage for working with the element's storage hash directly. Hat tip: Mootools.
· Fix issue where certain versions of Safari treat class names case-insensitively in Selector/$$ queries.
· Fix issue where Function#argumentNames returned incorrect results in IE when comments were intermixed with argument names.
· Selector.patterns should be represented as an ordered structure.
· Performance improvements in Function methods