graphic with four colored squares
Cover page images (keys)

WAI-ARIA: New Opportunities in Complex Formats

Funka Accessibility Days
14 April 2011
Michael Cooper
Email: cooper@w3.org
Twitter: cooper_w3c

http://www.w3.org/2011/Talks/04-14-Funka-MC/

Introduction

Michael Cooper

About W3C / WAI

World Wide Web Consortium (W3C)

Web Accessibility Initiative (WAI)

WAI Guidelines

W3C Specifications

WAI Specifications

Rich Internet Application Accessibility

Designing for accessibility

Demo comparison of accessible and inaccessible site

The rich Web application challenge

Basic steps to make application accessible

  1. Explicitly hide decorative elements of the application design from AT (SC 1.1.1)
  2. Define relationships amongst elements (SC 1.3.1)
  3. Define meaningful reading sequence (SC 1.3.2) and navigation sequence (SC 2.4.3)
  4. Provide ways to pause audio (SC 1.4.2) and movement (SC 2.2.2)
  5. Make application keyboard accessible (SC 2.1.1) and don't trap keyboard (SC 2.1.2)
  6. Ensure focus is visible (SC 2.4.7)
  7. Don't change context unexpectedly when control receives focus (SC 3.2.1) or changes value (SC 3.2.2)
  8. Give user interface components programatically determined name, role, states, properties, value (SC 4.1.2)

Role of WAI-ARIA

Enhance semantics

ARIA materials

ARIA concepts

ARIA taxonomy

ARIA Taxonomy

Example: ARIA button

  HTML Button Styled "Button" ARIA Button
Example Styled ARIA
Code <button onclick="updateButton ('HTML Button')> HTML </button> <span class="mybutton" onclick="updateButton ('HTML "Button"')"> Styled </span> <span class="mybutton" onclick="updateButton ('HTML "Button"')" role="button"> ARIA </span>
Screen reader "Button HTML" "Styled" "Button ARIA"

Notes about these examples:

Example: Toggle button

ExampleCode
Pick your poison





<button onclick="exToggleCheckboxes()" role="button" aria-pressed="false"> Check all </button> function exToggleCheckboxes() { var curState = button.getAttribute("aria-pressed"); //for each checkbox if (curState == "false" || curState == "mixed") element.checked = true; else element.checked = false; }

Notes about this example:

Roles

  1. Abstract roles—part of taxonony, not to be used
  2. Widgets, e.g., checkbox, menu, progressbar, tabpanel, treegrid…
  3. Document structure, e.g., heading, img, list, math, presentation…
  4. Landmark roles, e.g., main, navigation, search…

Complex widgets

Drag and drop

Relationships

Live regions

0

<div aria-live="polite" aria-relevant="text">0</div>

Live regions have content that updates without user intervention, e.g., stock tickers, chat programs

WAI-ARIA is a Candidate Recommendation

How WAI Develops Accessibility Guidelines through the W3C Process

  1. draft documents:Working Draft
  2. complete technical report:Last Call Working Draft
  3. using computer with technical report:Candidate Recommendation
  4. endorsing technical report:Proposed Recommendation
  5. approved technical report:W3C Recommendation (Web Standard)

Applying WAI-ARIA

Growth of WAI-ARIA

Support for WAI-ARIA

Policy implementation of WAI-ARIA

Beyond WAI-ARIA

WAI-ARIA doesn't address all aspects of rich internet applications, in particular, developer also needs to:

New Work on Enhancing Accessibility

Mapping language features to accessibility APIs

Recognizing user intent

Thank you

Michael Cooper: cooper@w3.org

http://www.w3.org/2011/Talks/04-14-Funka-MC/