190 likes | 287 Views
Real World Accessibility. Becky Gibson Dojo Accessibility Lead IBM Web Accessibility Architect. Top 3 Reasons People Don’t Implement Accessibility. 3. My site IS accessible - it’s up 24x7!. 2. People with Disabilities don’t use my site. is doing it. is doing it. UI is doing it.
E N D
Real World Accessibility Becky Gibson Dojo Accessibility Lead IBM Web Accessibility Architect
is doing it is doing it UI is doing it 1. Adding A11y is too hard and will ruin my design
ARIA - What is it? • Accessible Rich Internet Applications • W3C Specification, like HTML, CSS, XML etc. • Within Protocols & Formats Working Group which is part of WAI - Web Accessibility Initiative • In Last Call Status • Implemented in Firefox, IE8 with Opera and Safari under development • Gaining increasing support by browsers, Web toolkits and assistive technologies
ARIA Overview • Add role semantics to scripted UI elements • Update state information dynamically • Make items focusable via tabindex attribute • Add keyboard event handling • Mimic the keyboard behavior of the rich client UI • Minimize tab key navigation • Add live region info and notification to support Ajax
ARIA Example - Tree Role = tree(on outer container) Role = treeitemexpanded=true(on open Africa node) Role = treeitemselected=true(on highlighted Egypt child node with no children) Role = treeitemexpanded=false (on closed Australia node)
link combobox, option checkbox radio, radiogroup button progressbar slider spinbutton tree, treeitem alert application presentation group grid, gridcell tab, tabcontainer, tablist, tabpanel list, listitem menubar, menu toolbar more…… ARIA Roles
ARIA Landmark Roles • Makes finding and navigating to sections of the page easier • Application • Banner • Complementary • Contentinfo • Main • Navigation • search
banner Navigation Main contentinfo Landmarks Example
Landmark Example <div dojoType="dijit.layout.ContentPane" region="top" class="banner" role="banner"> <span class="logo">WebA11y</span> </div><!-- end of top --> <div id="left" dojoType="dijit.layout.ContentPane" region="left" role="navigation"> <!-- Tree goes here --> </div><!-- end of left --> <div id="content" dojoType="dijit.layout.ContentPane" title="Content" role="main" aria-live="assertive" aria-atomic="true" > Info from selected tree item is loaded here </div><!-- end of center --> <div dojoType="dijit.layout.ContentPane" region="bottom" role="contentinfo" > <!-- footer goes here --> </div><!-- end of bottom -->
ARIA Live Regions • Perceivable sections are identified with region role • Live indicates region is updated • Values of: Off, Polite, Assertive, Rude • Atomic identifies the extent of updates • True – entire region is updated and relevant • False – only changed element needs to be presented to user
Live Region Example <!-- message preview pane --> <div id="message" dojoType="dijit.layout.ContentPane" region="center" minSize="20" role="region" aria-live="assertive" aria-atomic="true" > Message Contents loaded here </div> <!-- end of "message" -->
Summary • JS Toolkits are implementing ARIA - use them! • Dojo dijits are all fully accessible • ARIA makes Ajax accessible • Make your websites dynamic AND accessible!