Prototype Changes

I found this article via Ajaxian regarding a nice block of Prototype updates.

  • Shorter syntax for event handling
    $('element').observe('click', function(e) {  alert(e); });
    
  • Make destructive Element, Form, and Form.Element methods return their first argument, so that multiple calls can be chained together.
    $(“sidebar”).addClassName(“selected”).show();

    The following methods now return their first argument: Element.toggle, Element.hide, Element.show, Element.remove, Element.update, Element.replace, Element.addClassName, Element.removeClassName, Element.observe, Element.stopObserving, Element.cleanWhitespace, Element.scrollTo, Element.setStyle, Element.makePositioned, Element.undoPositioned, Element.makeClipping, Element.undoClipping, Form.reset, Form.disable, Form.enable, Form.focusFirstElement, Form.Element.focus, Form.Element.select, Form.Element.clear, Form.Element.activate, Form.Element.disable, Form.Element.enable.

  • Form and Form.Element methods mixed in to $ and $$
  • For consistency, Element.toggle, Element.show, and Element.hide no longer take an arbitrary number of arguments.

    !! BACKWARDS COMPATIBILITY CHANGE !!

    If you have code that looks like this: Element.show(‘page’, ‘sidebar’, ‘content’); You need to replace it with code like this: [‘page’, ‘sidebar’, ‘content’].each(Element.show);

  • Mix in Form and Form.Element methods to forms and form field elements with $() and $$(). Closes #4448. [Dan Webb, sam]
  • Add Object.clone
  • Add Form.Element.disable and Form.Element.enable. Closes #4943.
  • Field is now simply an alias for Form.Element.
  • Add Element.Methods.getElementsByClassName and Element.Methods.getElementsBySelector. Closes #4669.
  • Avoid race condition when stopping an Ajax.PeriodicalUpdater. Closes #4809.
  • Improve support for synchronous requests. Closes #5916.
  • Add serialization and observation support for input type=search. Closes #4096.
  • Properly decode query components in String.prototype.toQueryParams. Closes #3487.
  • Add Array.prototype.reduce:
    • [1, 2].reduce() // [1, 2]
    • [1].reduce() // 1]
    • [].reduce() // undefined]
  • Add Object.keys and Object.values
  • Simulate non-GET/POST requests by POSTing with a _method parameter set to the actual verb
  • Make Element.update() handle TABLE-related elements with the DOM API because of IE’s missing .innerHTML property on them
  • Sync to script.aculo.us unittest.js library as of 2006/08/29
  • Add additional unit tests to test/unit/dom.html for testing Element.update and $().update in various enviroments
  • Prevent possible exceptions on unloading the page in IE

I’m psyched!


Comments

3 responses to “Prototype Changes”

  1. Oh, by the way, is there any “prototype official blog” or something, where any kinds of announcements can be found? It seems very strange to me, that such a wide-used library like prototype is so poorly documented and (btw) hadn`t been updated for such a long period of time.

  2. Worst colorscheme on the internet.

    Dark gray on black? Are you drunk?

    Lots of good info here, to those who don’t mind the squint.