Search Logger
Archives for March, 2010.

Archive for March, 2010

Ada Lovelace Day 2010: Sadaf Shahsahebi of the Yahoo! Developer Network

9:56 am - March 24, 2010 in Yahoo! User Interface Blog

Nicholas C. Zakas is the lead frontend engineer on the Yahoo! home page, a YUI contributor, and author. This article supports YUIBlog’s Ada Lovelace Day pledge; Ada Lovelace Day celebrates the contributions of women in technology and science.

Sadaf Shahsahebi working on her laptop

Growing up in the heart of Silicon Valley, one could argue that Sadaf Shahsahebi was always destined to work with technology. Her father brought home her first computer when she was 7 and by middle school she was already programming in Pascal at school while taking summer courses to learn C++. Even so, a part of Sadaf was equally drawn towards medicine and the potential to help treat and cure children. It wasn’t until right before college when she definitively decided to focus on technology. The medical profession’s loss turned out to be Yahoo!’s gain.

A chance summer internship at Yahoo! following her sophomore year in college began a relationship that lasted through to graduation, when she decided to work for Yahoo! full time. Though her internships weren’t focused on frontend engineering, she gravitated towards the discipline when she learned about the Juku program. Sadaf spent several months learning the ins and outs of frontend engineering before graduating with the first-ever Juku class.

Sadaf then joined the Yahoo! Application Platform (YAP) team as one of their first frontend engineers. She was part of the team that created YAP from scratch and grew it to the feature-rich platform that developers enjoy today. Quite an accomplishment for anyone, let alone for someone’s first job out of college.

Because of her depth of knowledge regarding YAP, Sadaf was also tasked to work on the technical integration of YAP into My Yahoo! She worked closely with the My Yahoo! team to create a seamless experience with the existing product, making a huge impact on the millions of My Yahoo! users worldwide.

Sadaf’s current role as part of the Yahoo! Developer Network team has her developing and maintaining the developer tools that allow third-party developers to create and manage their YAP applications. Suffice to say, if you’ve ever created a YAP application, then you’re thankful for Sadaf’s work.

What Sadaf brings to her work is evident when she speaks: a passion for the Web, a love of challenges, and a thirst for knowledge. She can regularly be found trying to expand her own understanding of all things software, as she’s an avid reader and just recently began a master’s program in computer science.

The challenge of the Web, a constantly changing, ever-evolving realm of APIs is perfectly tuned to Sadaf’s considerable talents. Although she is quick to admit that IE6 drives her nuts, Sadaf’s passion for front-end engineering and her dedication to continue learning ensures a bright future for her and any of her future projects.

 

Introducing IE9’s User Agent String

5:46 pm - March 23, 2010 in IEBlog

This post introduces IE9’s User-Agent (UA) String and it builds on previous blog posts and documentation.

An important change for site developers to know is that IE9 will send the short UA string by default. This change improves overall performance, interoperability and compatibility. IE9 will no longer send additions to the UA string made by other software installed on the machine such as .NET and many others.

Some folks will notice that the IE9 Platform Preview sends IE8’s UA string. We will include the new IE9 UA string in an upcoming Platform Preview update. The reason we’re writing about IE9’s UA string now is to give site developers an early preview of these important changes and time to verify that any current UA logic continues to work with the new IE9 UA string.

IE9’s default UA string

There are four changes to IE8’s UA string that site developers need to be aware of:

  1. Application version is incremented from ‘Mozilla/4.0’ to ‘Mozilla/5.0’ to match other browsers (explained well in the great History of the user-agent string post). This change signals that IE9 is an interoperable browser.
  2. Version token is incremented from ‘MSIE 8.0’ to ‘MSIE 9.0’.
  3. Trident token is incremented from ‘Trident/4.0’ to ‘Trident/5.0’.
  4. IE9 will send the following short UA string without additions made by other software installed on the machine:
breakdown of the different parts of the UA string

IE9 will send the short UA string by default

We’ve received many reports  on compatibility issues due to long, extended UA strings. IE9 will send the short UA string detailed above without pre and post platform registry value tokens. This is interoperable with other browsers, and improves compatibility and network performance.

Applications and platforms can continue to add to the UA string through the pre platform and post platform registry keys as they did in previous IE releases. IE9 will not change existing registry values.

Websites will continue to be able to get the extended UA string with pre and post platform tokens through the navigator.userAgent property.

IE9’s Compatibility View UA string

Similar to IE8, IE9’s Compatibility View will map to IE7 Standards Mode, and IE9’s UA string when in Compatibility View will be:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)

In Compatibility View, IE9 reports itself as IE7 through the application version number (Mozilla/4.0) and version token (MSIE 7.0). This is done for compatibility. An incremented Trident token, from ‘Trident/4.0’ to ‘Trident/5.0’, allows websites to distinguish between IE9 running in Compat View and IE8 running in Compat View.

Request for site developers

Test how your site responds to the new IE9 UA string (check and change the UA string through the registry). If your site doesn’t already respond with IE-compatible content, we’d love to see it updated now to recognize IE9 and be future-proof.

Marc Silbey
Program Manager

 

MIX Session Videos Now Available

3:16 pm - March 23, 2010 in IEBlog

We had a great time last week at MIX talking to many of you about IE9.  For everyone who wasn’t able to be at the conference, we wanted to let you know that all the sessions are now available on-demand. 

Enjoy!
Rob Mauceri
Group Program Manager

 

In the YUI 3 Gallery: John Lindal’s Form Manager

2:08 pm - March 23, 2010 in Yahoo! User Interface Blog

John Lindal (@jafl5272 on twitter) is one of the lead engineers constructing the foundation on which Yahoo! APT is built. Previously, he worked on the Yahoo! Publisher Network.

The first version of the code discussed in this article was written in 2006. It has continued to evolve ever since, and now it’s been shared as part of the YUI 3 Gallery as the Form Manager module.

Forms have been a staple on web sites for a very long time. In the early days, they were quite simple: the user entered values and then waited while the server processed the values or spit back errors. The rise of Web 2.0 has significantly improved the experience, most notably by pre-validating on the client. This provides immediate feedback and avoids pointless connections to the server.

Pre-validation is merely one aspect of forms, however. The entire cycle is:

  1. pre-populate the form with default values;
  2. pre-validate the input in the browser;
  3. submit the form data to the server synchronously or asynchronously;
  4. display the results returned by the server (success or errors).

When combined with YUI 3 IO, the YUI 3 Gallery module Form Manager supports this full cycle. You can play with the client-side functionality here.

Initialization

The first step, pre-populating the form with default values, is of course best done by setting values directly in the markup, because this works even when JavaScript is turned off. However, you can also pass a map of default values, keyed on the names of the form elements, to the Form Manager constructor. When you call prepareForm(), it merges the default values from the DOM with the default values passed to the constructor, with the constructor values taking precedence. The result is saved so you can easily reset to these values by calling populateForm(). You can also modify these stored defaults: setDefaultValues(), setDefaultValue(), or saveCurrentValuesAsDefault(). (Note that this is different from the browser’s native reset function, since that uses only values encoded in the DOM. Form Manager provides clearForm() as a wrapper for reset.)

Another useful function to call during initialization is initFocus(). This sets focus to the first element in the form. If filling out the form is the main reason for visiting the page, this saves the user a click. Obviously, if you have more than one form on the page, you should only call initFocus() for one of them.

Pre-validation

Pre-validating user input is a tricky business. In my experience, the simplest approach is best: check everything after the user says I’m done. This avoids the need to filter the input stream (keyup is easy to catch, but paste is notoriously difficult, and it all leads to very unexpected edge case behaviors) and, more importantly, it doesn’t interrupt the user’s flow. This is why Form Manager provides a single function to validate everything in the form (drum roll, please): validateForm().

Unlike other solutions, Form Manager stores most of the validation configuration in the DOM. To mark a field for validation, apply one or more of the following CSS classes directly to the field:

yiv-required

Value must not be empty.

yiv-length:[x,y]

String must be at least x characters and at most y characters. At least one of x and y must be specified.

yiv-integer:[x,y]

The value must be an integer, and the value must be at least x and at most y. x and y are both optional.

yiv-decimal:[x,y]

The value must be a decimal, and the value must be at least x and at most y. Exponents are not allowed. x and y are both optional.

For example, if a field must be filled in, and it only accepts between 6 and 10 characters, the CSS class would be yiv-required yiv-length:[6,10].

One nice benefit of encoding validation in CSS classes is that it can be applied in related situations, e.g., when editing dynamically created fields in a table. (I hope to post an example for YUI 2 DataTable soon.) FormManager exposes the static function validateFromCSSData() so you don’t have to reinvent the wheel.

If you need to use a regular expression to validate a field, register it by calling setRegex(). For anything else, you can attach a function to a field by calling setFunction(). If you need to perform checks that encompass multiple fields, you can override postValidateForm() on your instance of Y.FormManager.

One final note: As the name suggests, pre-validation is not real validation. JavaScript is relatively easy to subvert (or turn off completely), so the server must never trust anything that it receives from the client. In addition, some checks can only be done on the server, e.g., anything that requires hitting the database.

Displaying Errors

Obviously, if either pre-validation on the client or validation on the server fails, then you need to notify the user, ideally by highlighting the fields that need attention. Form Manager supports this via the function displayMessage().

This function expects certain CSS marker classes on the DOM surrouning each form element or tightly coupled set of form elements. My favorite layout is:

<div class="formmgr-row>
  ...element label...
  <span class="formmgr-message-text"></span>
  ...form element...
</div>

This localizes well, since the label is above the field, and when an error message is displayed, it’s very clear to which field the error applies. To see it in action, follow this link and click the Validate button in the upper left corner of the page.

But that is just my preference. You can arrange the DOM elements any way you want inside the container marked by formmgr-row, as long as somewhere in there is another container marked by formmgr-message-text.

Message Types

One important point is that displayMessage() requires a message type. The supported types are stored in Y.FormManager.status_order in order of precedence. The default is [ 'error', 'warn', 'success', 'info' ], but you can modify this to suit your needs. The ordering is important because, if you call displayMessage() with a higher precedence type and the field is already displaying a message with a lower precedence, then the new message will replace the original message. Similarly, a lower precedence message will be ignored if a higher precedence message is already displayed. This allows you to toss messages at each field with abandon, secure in the knowledge that errors will override warnings.

When a message is displayed, the container marked with formmgr-row gets an extra CSS class: formmgr-hastype, where type is the message type. This allows you to style the message, field, label, etc. in a different way for each message type. In addition, the fieldset containing the form field also gets the same class. This can be used to direct the user’s attention when the form is large. (If several fields within a fieldset have different types of messages, the highest precedence type is set on the fieldset.)

Messages

Form Manager includes a default set of error messages for all the validations that can be encoded in CSS. These strings are stored in Y.FormManager.Strings, so you can modify and/or localize them.

You can also specify custom messages for individual fields by calling setErrorMessages().

Note that there is no default message for a regular expression validator, because anything generic like The value does not match the required pattern. is utterly meaningless to the user. If you do not set a message for the type regex before setting the regular expression itself, Form Manager will log an error to remind you.

Submitting the Form

Regardless of whether you submit the data synchronously (via form.submit()) or asynchronously (via Y.io), you will probably want to disable the form while the data is being processed. Form Manager automatically finds all buttons inside the <form> element. If you have additional buttons elsewhere on the page, you can register them by calling registerButton(). All known buttons will be disabled when you call disableForm(). (If you use XHR, call enableForm() after you receive the response from the server!)

If you submit the form synchronously, then you will serve the same page again if there are errors. In order to work without JavaScript, you should write the errors directly into the DOM, the same way that Form Manager does it.

If you submit via XHR, then you know that JavaScript is enabled, so you can use displayMessage() to highlight the values which the server rejected. Obviously, this requires that the response from the server include detailed error information!

As a final note, if the form is in an overlay, then you should only close the overlay if the server response with success; i.e., display errors in the overlay, but display a success message somewhere prominent on the main page.

 

Verify and Claim Your Website URL in Merchant Center

1:21 pm - March 23, 2010 in Google Merchant Blog
Today we’re introducing a change to Google Merchant Center requirements to help ensure that you’re the only one submitting product listings for your site.

You will now need to verify yourself as the owner of the site and then claim the URL in order to submit product listings for that site. This requires two separate steps:
  1. Verify yourself as site owner by following the instructions at Google Webmaster Tools.
  2. Once your site is verified, sign in to your Google Merchant Center account and click the “Claim this URL” link on your General Settings page.
It’s a small inconvenience that you’ll have to go through once, but it’s important to make sure you’re the only one authorized to upload product listings for your site.

Existing Merchant Center users need to verify and claim their URLs by May 18th. After that, this requirement will become mandatory and product listings for non-verified or non-claimed URLs will be disapproved. New Merchant Center users will be prompted to do this when they begin the sign-up process.

Our Help Center article has more information on how to go about verifying and claiming your website URL.

 

Alert: 30 days before major v13 sunset

9:40 am - March 23, 2010 in AdWords API Blog
Attention AdWords API developers: you now have just 30 days to migrate your application to the new AdWords API. On April 22, most v13 services will be sunset. We announced version v200909 on October 22, 2009 and told you that in six months we would sunset most v13 services. If you have not begun migrating your application to v200909, it’s very important that you start right away.

Be sure to follow us on Twitter for the latest news, tips, and tricks about the AdWords API and please post your migration questions to the Developer Forum.

– Jason Shafton, Product Marketing Manager
 

In the Wild for March 22, 2010

10:38 am - March 22, 2010 in Yahoo! User Interface Blog

Some of the most interesting YUI community work to date has been done recently as part of the YUI 3 Gallery Contest 2010; I surveyed some of the entrants on Friday and a few more have come in this weekend, including a Gallery version of Matt Snider’s Radial Menu. The contest is open until the end of the day, and we’re looking forward to reviewing all the entrants over the next few days.

In the meantime, here are some other developments we’ve noted recently. Let us know what me missed in the comments or via @yuilibrary on Twitter.

 

The CSS Corner: About CSS corners

7:12 pm - March 19, 2010 in IEBlog

The first time we used ‘The CSS Corner’ as a general blog post heading, Chris Wilson sent this feedback: “Many readers will think the post is about border-radius”. The very first comment proved him right within hours.

Today, CSS Corner is about the border-radius property, by far the most heavily requested feature of the CSS3 Backgrounds & Borders module.

A factor behind this popularity is its pervasive role in styling the ‘chrome’ of a web application. Making modern, visually attractive tabs, dialogs, custom button controls, even super-awesome button controls is much harder if the only available corner shape is square. Quite literally rounding the edges of web app UIs to give them a more polished or even desktop-app look was important enough for authors to fall back on using table layouts and images to achieve the desired effects across all browsers. A wealth of individual requirements and experimentation spawned countless blog posts, a dedicated Javascript library and even a number of jQuery plugins.

A Long Time Coming

First specified back in 2002, border-radius was already supported by Firefox 1.0 in 2004 as –moz-border-radius. Almost three years later, Safari 3.0 followed with –webkit-border-radius. In December 2009, the specification became a Candidate Recommendation. A few weeks ago, Opera’s 10.50 release was the first to add support the property without a vendor prefix. The first IE9 Platform Preview Build released at MIX 2010 also supports border-radius. Within months, a single border-radius declaration will work interoperably in all the latest browser releases.

Getting It Right

Addressing well-known use-cases is always a primary goal. But the two borders connected by a CSS box corner can also be styled e.g. using dashes or dots which should follow the specified curve. Each border may also use a different style, width or even color. Getting all the permutations right – producing the result expected by the author, as defined by the specification – across the ranges of each variable has been a particular challenge for browsers.

Consider dotted borders of varying widths with rounded corners; which of the following renderings is likely to reflect the intent of most authors?

four images of a box with a dotted border, each size has a different width.  The top left box the corners are not dotted, they look solid, the top right box the dotts are more like squares and the corners are  not smooth.  The bottom left box there are some dots which overlap in the corners, the bottom right box the dots are smoothly spaced and transition evenly from the different widths.

Each blue box above is a screenshot of the same simple testcase as rendered in a different browser. IE9’s rendering is at the bottom right. (The image links to the testcase).

For a solid border of variable width with the same corner radii, IE9 gives the rendering at right:

two boxes with solid rounded corners of different widths.  The box on the left there is a sharp edge between the two borders.  The box on the right the transition is smooth.

Cross-browser agreement on the rendering of more creative border geometries enabled by this new feature remains to be achieved:

three boxes, with double rounded corners of different colors.

IE9’s rendering is also the rightmost above.

Future challenges include interoperable corner gradients; when a rounded corner connects border of different colors, modern browsers will typically display something like:

a curve with a sharp line where it changes from red to blue

While the specification defines the exact position of the transition line between the color areas, an interoperable and testable definition for a color gradient along the curve remains to be defined. If you are a web author with feedback or thoughts on the matter, the CSS Working Group would love to hear from you at www-style@w3.org.

border-radius in the IE9 Platform Preview Build

Our first preview build includes full support for the property as currently defined, including shorthand and longhand syntax, as well as the corresponding DOM properties.

As CSS3 Backgrounds & Borders has reached Candidate Recommendation, the property name is not prefixed with –ms.

A Call To Action

While a number of web pages already make use of this feature, some, such as the superawesome button demo page, do not render properly in IE9 or Opera 10.50 because they lack an unprefixed declaration of the border-radius property. As the specification nears Recommendation and browser vendors are working on their final implementations and testcases for submission to the W3C, we recommend that new content always include a border-radius declaration without vendor prefix.

We are looking forward to hearing your feedback!

Sylvain Galineau
Program Manager

 

The Internet Explorer Testcenter welcome page: Clarification & Corrections

5:52 pm - March 19, 2010 in IEBlog

Earlier this week, we published a number of new tests for web standards on our IE Test Center page, together with a harness to run them automatically in your browser as well as cross-browser pass rate statistics for these new tests. We quickly received web community feedback that the pass rate data in the first table was prone to misinterpretation.

What the Test Center Pass Rates Include:

The pass rates on the site are specific to only the 104 new test cases we just submitted to the W3C in conjunction with the first IE9 Platform Preview. As part of our regular involvement with the Working Groups across a number of W3C standards, we have identified a number of interoperability issues that are not yet covered by the standards body's existing test suite.  We should note that the test results are only for the Windows versions of all the browsers in the test results table.

Pass Rates and Vendor-specific Feature Implementations

These tests were written and submitted as standard test cases, not IE9 Platform Preview demo pages.  Thus, the cases don’t include any vendor-specific prefixes. By contrast, our IE9 Test Drive samples include extra code to support the vendor-specific versions of certain features (e.g. -moz-border-radius for Mozilla’s implementation of CSS3’s border-radius).  Standards test cases do not and cannot include proprietary properties, methods, or markup.

In the case of border-radius, Opera 10.50 and recent Google Chrome builds support the un-prefixed version of the property. The latest major releases of Firefox and Safari do not. The pass rates for the current Firefox and Safari versions simply reflect that they require vendor specific prefixes and do not yet support the web standard markup. This wasn’t meant to imply that those browsers don’t have support for rounded corners using some markup but simply reflects the fact that they require -moz/-webkit CSS declarations to render them. From an interoperability standpoint, web authors cannot use the same markup across these browsers to achieve the same results today.

Test Case Fixes

Commenters on this blog and beyond also reported some bugs in a handful of the test cases we submitted for review on Tuesday.  Thank you!  This is exactly why there is a test case review process.  Feedback on the test cases helps the web development community.  We welcome it. We have updated the tests to reflect the initial feedback to ensure the cases are useful to the web standards community. The known issues and related pass/fail updates are described below:

  • CSS3 Selectors
    • The :nth-child-selector and CSS comments test case assumes that comments can occur between the multiplier and the n term i.e. that in the (an+b) expression, a and n are separate tokens. This was a bug in the test case. The IE9 Platform Preview should ignore this selector and thus fail the test case. Firefox 3.6, Opera 10.50, Safari 4.0, and Chrome 4.0 all pass.
  • DOM Level 2 Style
    • The http://samples.msdn.microsoft.com/ietestcenter/domstyle/showdomstyletest.htm?./invalidMedia.htm test case verifies that @import rules inside an @media block are ignored but the case had a bug and checked for that result improperly. The first IE9 Platform Preview now fails this test.  Firefox 3.6 passes this test.  Opera 10.5 still fails the test. Safari 4.0 and Chrome 4.0 still pass this test.
    • Both the Syntax for backgroundRepeat and negative border width test cases had Javascript in them that mistakenly used an IE-only Javascript extension allowing elements to be referenced directly using their ID attribute value, which is supported for compatibility reasons.  The JavaScript in the test case was changed. The IE9 Platform Preview still passes both test cases.  Firefox 3.6 now passes both of these test cases.  Opera 10.50 still passes both tests.  Safari 4.0 still passes the backgroundRepeat test and still fails the negative border width test.  Chrome 4.0 still fails both test cases.

We thank the community for the feedback we’ve received so far. We have updated our tests, and the pass rate data, and submitted these updates to the standards body.

This is part of the standards process: a conversation leading to consensus. The one request we have is to please have these conversations within the W3C working groups instead of on various blogs.  We have a link to each working group’s mailing list in the table on this blog post.  We can have a healthy discussion about each test case in a threaded, archived format where everyone interested can participate and anyone can follow-along. 

What’s Next

As we continue developing and testing IE9, we will continue submitting our test cases to the W3C and the wider community. Conformance and interoperability can only be measured and achieved with the help of solid, complete test suites. Modern browsers should be able to demonstrate their conformance to web standards.  Test suites that identify cross-browser incompatibilities help all browsers make progress.

Jason Upton
Test Manager

 

Gallery Contest: An Update

12:56 pm - March 19, 2010 in Yahoo! User Interface Blog

The YUI 3 Gallery Contest 2010 is well underway, and with a full weekend left for submissions I wanted to share with you what’s come in so far. These are all the brand new modules submitted by what I believe are eligible contest participants since the contest’s start date (if you think you’re eligible and I’ve omitted your contribution, please let me know in the comments). These are ordered from most to least recent.

Two HTML 5 video abstractions are included here, as well as a Lightbox port, a Quicksand port, a new Slideshow and some lower-level utilities. Participants include Josh Lizarraga, who authored one of the first YUI 3 community contributions, and Greg Hinch, who was the first public contributor to YUI 3 Gallery. There are some people new to the YUI community, too, whose contributions look outstanding.

It’s not too late to enter the contest; visit the contest page, check that you are eligible, and make sure you fax in your CLA and submit your module prior to the deadline on Monday night.

HTML5 Player (gallery-player)

Josh Brickner’s HTML5 Player is a YUI 3 widget that creates a video player using the HTML5 video tag.

Josh has put an example up here, along with a README.

YUISand (gallery-yuisand)

Lauren Smith’s YUISand “fancifies the sorting and itemizing of a collection of similar items.” Lauren’s work implements the functionality of the Quicksand module built by Jacek Galanciak for jQuery. Lauren has docs up, and he’s got a full example roster.

YUISand example

YUI Slideshow (gallery-yui-slideshow)

Josh Lizarraga’s YUI Slideshow is a Gallery version of a project Josh first shared with the community last year on his FreshCutSD site. Writes Josh: “YUI Slideshow lets you create customizable, animated slideshows from images or any other HTML. The module has many different built-in transitions you can use to create a variety of effects. You can also create your own by passing in an Anim configuration object. You can also designate any HTML element as a pause, play, next, or previous button.”

Effects (gallery-effects)

Andrew Bialecki’s Effects package wraps YUI’s Animation Utility with an API similar to Scriptaculous to make animating nodes even easier.

Lightbox (gallery-lightbox)

Andrew Bialecki’s Lightbox is a port of the Lightbox module to YUI. At present, the module is targeting the featureset of Lightbox 2.

I didn’t see any posted documentation from Andrew on this module yet, but the example that he ships with gallery gives you an idea of what this module does.

Data Storage (gallery-data-storage)

Andrew Bialecki’s Data Storage adds the functionality of the jQuery data storage API (http://api.jquery.com/category/miscellaneous/data-storage/). Andrew describes the module this way: “Sometimes it’s useful to store arbitrary data with a particular node or object. If your class uses the Attribute utility, you’re in luck and your job is done. However, the Node class doesn’t (yet) use the Attribute utility, so this port of the jQuery data storage API allows you to associate data with a particular Node instance. In fact, you’re not limited to Y.Node instances — any object will do.”

Component Manager (gallery-base-componentmgr)

Eric Ferraiuolo’s Component Manager is a Y.Base extension. Writes Eric: “Don’t need all your page’s components to be ready and loaded on page load? Want to lazily load their dependencies and lazily instantiate them on-demand based on some user action? Then use this Y.Base Extension.”

Video (gallery-video)

Greg Hinch’s Video module attempts to insert a video element into the page, using HTML 5, and falls back to Quicktime if HTML 5 support isn’t available. Here’s Greg’s description: “Dealing with video can be difficult, trying to find the right player to use for your user’s environment and the type of video you want to play. This module is an attempt to centralize all that logic into a single interface, including the events and methods published by the various players available.”

Form Events (gallery-form-event)

Eric Ferraiuolo’s Form Events module adds event bubbling to form events: submit, reset, and change. IE is the major browser that doesn’t natively support bubbling of these events.

 
 
 
 
 
 
It's All About Search | © clsc.net |
2012.05.2123:38
Tech used here: Valid HTML - Valid CSS - Valid RSS - JavaScript - PHP - Smarty - MySQL - and a partridge in a pear tree.