Since its launch, Prototype has become one of the most regarded and used JavaScript frameworks around.
Prototype is not recommended for small projects (like a 3 page website), but is perfect for larger websites or JS-powered Web apps, mainly due to its larger code size.
The framework has been tested and working with Mozilla Firefox 1.5+, Internet Explorer 6+, Safari 2.0.4+, Opera 9.25+ and Google Chrome 1+.
This will give developers a large leeway in creating cross-browser apps that works a wide range of scenarios.
What is new in this release:
- Updated to the latest version of Sizzle for better performance and to fix a few issues we've seen in the wild.
- Fixed an issue in recent versions of IE where an internal capability check was inadvertently triggering a "This page uses Java" dialog.
- Fixed a number of small issues in DOM- and layout-related methods.
What is new in version 1.7.2.0:
- Updated to the latest version of Sizzle for better performance and to fix a few issues we've seen in the wild.
- Fixed an issue in recent versions of IE where an internal capability check was inadvertently triggering a "This page uses Java" dialog.
- Fixed a number of small issues in DOM- and layout-related methods.
What is new in version 1.7.1.0:
- DOM rewrite
- ECMAScript 5 compatibility
- Fixed a bug with Element.setOpacity that was causing problems in IE9 and the upcoming IE10.
- Fixed the way we serialize form values to be more accurate to the way browsers work.
What is new in version 1.7:
- 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.
What is new in version 1.7 RC3:
- This long-delayed version includes full support for Internet Explorer 9.
What is new in version 1.6.1:
- 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.
What is new in version 1.6.1_rc3:
- 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.
What is new in version 1.6.1_rc1:
- '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
Requirements:
- JavaScript enabled on client side
Comments not found