Slide text from BayJax presentation "Making JavaScript Accessible"

[Presentation on Slideshare]

Making JavaScript Accessible
BayJax on Accessibility (BayJax - The Bay Area Ajax and JavaScript Meetup)
Presented by Dennis Lembree
June 15, 2010
Yahoo! HQ - Sunnyvale, CA

Agenda

About Me

Misconceptions

Issues with JavaScript and Accessibility

Issues - Keyboard Access

Issues - Keyboard Access

The following screenshot shows an example of core functionality that is not available with a keyboard.

Image: Screen shot of Twitter.com page with blank section highlighted that should have links.

Issues - Keyboard Access

The following screenshot shows an example of links which can be accessed with a keyboard, but a sighted user has no clue of the cursor location.

Image: Screen shot of CNN home page. Politics tab is selected but not visually distinguishable.

Issues - Keyboard Access

Tips

Issues - Content Changes

What It Is

Issues - Content Changes

How To Help

Image: Screen shot of Accessible Twitter page with JavaScript alert that says "Success! You are now following web axe".

Issues - Appropriate Usage

Only use JavaScript:

Image: Screen shot of CA.gov web page with breadcrumbs highlighted. In this site's implementation, the breadcrumbs require JavaScript.

Issues - Unavailable

Issues - Unavailable

Progressive Enhancement

Progressive Enhancement

Image: Illustration of peanut M&M. Peanut is content; chocolate is presentation, and candy shell is client-side scripting (behavior/JavaScript).

Progressive Enhancement

Core principles

(taken from Wikipedia)

Image: AccessibleTwitter.com main page with JavaScript off.

Image: AccessibleTwitter.com main page with JavaScript on.

Image: Accessible Twitter.com main page with JavaScript on. Features that are enhanced are highlighted including character counter and open/close toggle for Shorten URL and Add Image features.

WAI-ARIA

WAI-ARIA

WAI-ARIA

Live Regions - Great for Ajax!

aria-live="off"

aria-live="polite" - updates announced if the user is not currently doing anything.

aria-live="assertive" - updates announced as soon as possible, but it is not necessary to immediately interrupt the user.

Image: Accessible Twitter.com main page. The character counter is highlighted. The following code labels it: aria-live="polite"

WAI-ARIA

aria-atomic="false"

aria-atomic="true"

WAI-ARIA

aria-busy="true"

Suppresses AT presentation changes while a region is updating.

About HTML5

HTML5 will make many complex JavaScript (and Flash) features inherently accessible by integrating them natively with the browser.

Links

Dennis on Twitter:
@DennisL, @AccessibleTwitr, @WebAxe