Accessible DHTML Implementation Aaron Leventhal IBM Senior Engineer Firefox accessibility lead Firefox 1.5.

Slides:



Advertisements
Similar presentations
Introduction to Settings WEAVE: Assessment on Your Own Terms.
Advertisements

ORGANIZING THE CONTENT Physical Structure
ARIA Web Design and Development Patterns KEITH HAYS IT Accessibility Specialist CITES / ITaccess
Creating dynamic and accessible content in Drupal 7 using WAI-ARIA Sarah Pulis Web Accessibility Evangelist DruaplCon | Content Authoring |
CS7026 jQuery Events. What are Events?  jQuery is tailor-made to respond to events in an HTML page.  Events are actions that can be detected by your.
Antranig Basman, CARET, University of Cambridge Aaron Zeckoski, CARET, University of Cambridge Josh Ryan, Arizona State University Colin Clark, Adaptive.
Ch. 6 Web Page Design – Absolute Positioning, Image Maps, and Navigation Bars Mr. Ursone.
© 2007 IBM Corporation IBM Emerging Technologies Enabling an Accessible Web 2.0 Becky Gibson Web Accessibility Architect.
Asp.NET Core Server Controls. Slide 2 Lecture Overview Understanding the types of ASP.NET controls HTML controls ASP.NET (Web) controls.
Using KompoZer -- a web editor A collection of video tutorials
Tutorial 16 Working with Dynamic Content and Styles.
Personal Independent Networking Project HTML Forms by Chris Smith.
Microsoft © Access 2000 Types of Forms Forms & Real Estate Conclusion Questions Why use a Form What is a Form Data behind a Form Controls on a Form Code.
CST JavaScript Validating Form Data with JavaScript.
Scripted, Tab Accessible Tree Control Hierarchical view of data via tree control. Keyboard Navigation from initially closed tree to view above with focus.
Chapter 9 Collecting Data with Forms. A form on a web page consists of form objects such as text boxes or radio buttons into which users type information.
Accessibility for Rich Internet Applications: Colin Clark, Fluid Project Technical Lead, Adaptive Technology Resource Centre Techniques & Toolkits.
An Introduction to WAI-ARIA Dan Jackson Web Team Leader City University London.
© 2008 IBM Corporation Emerging Internet Technologies Real World Accessibility with ARIA Becky Gibson Web Accessibility Architect.
4.1 JavaScript Introduction
Real World Accessibility Becky Gibson Dojo Accessibility Lead IBM Web Accessibility Architect.
1 Forms A form is the usual way that information is gotten from a browser to a server –HTML has tags to create a collection of objects that implement this.
Development of Accessible E-documents and Programs for the Visually Impaired WAI-ARIA (V2011)
HTML DOM.  The HTML DOM defines a standard way for accessing and manipulating HTML documents.  The DOM presents an HTML document as a tree- structure.
XHTML Introductory1 Forms Chapter 7. XHTML Introductory2 Objectives In this chapter, you will: Study elements Learn about input fields Use the element.
ARIA + HTML5 Steve Faulkner & Hans Hillen The Paciello Group.
Execution Environment for JavaScript " Java Script Window object represents the window in which the browser displays documents. " The Window object provides.
CNIT 133 Interactive Web Pags – JavaScript and AJAX JavaScript Environment.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 5 JavaScript and HTML Documents.
Accessible DHTML Simon Bates David Bolter ATRC
ASP.NET Controls. Slide 2 Lecture Overview Identify the types of controls supported by ASP.NET and the differences between them.
CIS 205—Web Design & Development Dreamweaver Chapter 1.
Lesson13. JavaScript JavaScript is an interpreted language, designed to function within a web browser. It can also be used on the server.
INTRODUCTION TO JAVASCRIPT AND DOM Internet Engineering Spring 2012.
Accessible DOM scripting with ARIA Léonie Watson
Extending HTML CPSC 120 Principles of Computer Science April 9, 2012.
Functional Accessibility Evaluation of Web 2.0 Applications Testing Jon Gunderson, Ph.D University of Illinois.
 Whether using paper forms or forms on the web, forms are used for gathering information. User enter information into designated areas, or fields. Forms.
WEB ACCESSIBILITY. WHAT IS IT? Web accessibility means that people with disabilities can use the Web. Web accessibility encompasses all disabilities that.
CpSc 462/662: Database Management Systems (DBMS) (TEXNH Approach) HTML Forms James Wang.
WaveMaker Visual AJAX Studio 4.0 Training Basics: Building Your First Application Designer Basics.
HTML Forms. Slide 2 Forms (Introduction) The purpose of input forms Organizing forms with a and Using different element types to get user input A brief.
Internet & World Wide Web How to Program, 5/e. © by Pearson Education, Inc. All Rights Reserved.
1 Dr Alexiei Dingli XML Technologies SAX and DOM.
Review of the DOM Node properties and methods Some ways of accessing nodes Appending, copying and removing nodes Event handling – Inline – Scripting –
Class Builder Tutorial Presented By- Amit Singh & Sylendra Prasad.
1 CSC160 Chapter 7: Events and Event Handlers. 2 Outline Event and event handlers onClick event handler onMouseOver event handler onMouseOut event handler.
January 2006Colby College ITS Setting Up Course Pages.
+ FORMS HTML forms are used to pass data to a server. begins and ends a form Forms are made up of input elements Every input element has a name and value.
ARIA Support on Mobile Browsers Jonathan Avila Chief Accessibility Officer, SSB BART Group.
HTML Forms.
An Introduction to the Accessibility API on Windows David MacDonald President, CanAdapt Solutions Inc.
Dr. Ahmet Cengizhan Dirican BIL 374 Internet Technologies 5. JavaScript and HTML Documents.
7. JavaScript Events. 2 Motto: Do you think I can listen all day to such stuff? –Lewis Carroll.
Understanding JavaScript and Coding Essentials Lesson 8.
1 Designing RIA Accessibility: A Yahoo UI (YUI) Menu Case Study Doug Geoffray & Todd Kloots Capacity Building Institute Seattle, Washington
JavaScript and Ajax (JavaScript Environment) Week 6 Web site:
HTML Tutorial. What is HTML HTML is a markup language for describing web documents (web pages) HTML documents are described by HTML tags Each HTML tag.
Introduction to JavaScript Events Instructor: Sergey Goldman 1.
1 Using jQuery JavaScript & jQuery the missing manual (Second Edition)
HTML Structure II (Form) WEEK 2.2. Contents Table Form.
ANDROID LAYOUTS AND WIDGETS. Slide 2 Introduction Parts of the Android screen Sizing widgets and fonts Layouts and their characteristics Buttons, checkboxes.
Advanced HTML Tags:.
CARA 3.10 Major New Features
How to Write Web Forms By Mimi Opkins.
Objectives Design a form Create a form Create text fields
Adobe Acrobat Pro DC – Introduction to Accessible PDFs
Web Programming and Design
Presentation transcript:

Accessible DHTML Implementation Aaron Leventhal IBM Senior Engineer Firefox accessibility lead Firefox 1.5

Current support Navigation: keyboard & mouse Semantics –Roles: 42, not yet author extensible –Properties States Value Relations –Events (automatic)

Navigation Scenarios 1. Simple controls are in tab order –Examples: checkbox, slider 2. Container controls group focusable children –Examples: trees, lists, radio groups, spreadsheets –The last focused child is in the tab order –Other children can be focused via the pointer –Key navigation managed by the container widget (often arrows) 3. Non-interactive content won’t take input –Examples: progress meter, alerts, doc structural elements –Click to focus skips, goes up parent chain for focus –On screen keyboards don’t list them as choices –Screen readers skip them in navigation order –Voice input skips them during “say what you see” vocab buildup

Choices for elements normally not focusable: 1. Tab key focusable tabindex >= “0” 2. Script- or click- onlytabindex <= “-1” 3. Not focusable default / no tabindex Element “Navigability” Issue: how does XHTML2 implement these?

Tab key focus How to cycle: First: Elements with tabindex > “0” (Navigate in tabindex order) Next: All other focusable elements (Navigate in document order)

Click focus 1.Find most specific element containing click 2.If focusable, focus it 3.Else go to parent, repeat #2

Semantics tree spreadsheet tab panel menu slider progressbar applicationalert description required invalid selected labeledby describedby multiselect expanded checked haspopup & more … valuenow

Accessible tree Subset of the DOM tree # text #text #text Exposed as MSAA or ATK Name: e.g. “click here” Role: ROLE_LINK States: STATE_FOCUSABLE | STATE_FOCUSED | STATE_LINKED | STATE_TRAVERSED #text #text #text

No xhtml2:role Accessible object implementation AT Role AT Name Boolean AT States Base AT interface Additonal AT interfaces Often from, attribute or inner content Collected from attributes, focus state & layout info IAccessible or AtkComponent. IAccessible or AtkComponent. AtkTable, AtkValue, etc. AT Value Acquired from Gecko Namespace + Tag

Has xhtml2:role Accessible object implementation AT Name Boolean AT States Base AT interface Additonal AT interfaces xhtml2:role attribute AT Role AT Value Namespace + Tag override Use generic implementation for vanilla,, etc.

Each mapped role [1-4] 1.Role name as a string, e.g. “checkbox” 2.Role constant for API 3.Name rule eNameLabelOrTitle eNameOkFromChildren 4.Value rule eNoValue eHasValueMinMax Can support unknown value via aaa:valuenow=“unknown” (progressbar)

Each mapped role [5-6] 5. States always on for that role Role “secret” → STATE_PROTECTED Role “spreadsheet” → STATE_MULTISELECTABLE 6. Attribute → state rules Name/value pairs to AT states, e.g. valuenow=“unknown” → STATE_MIXED For some ‘bool’ attributes: set/unset is important! If checked is set → checkable if selected is set → selectable if expanded is set → expandable “false” always means false, unlike HTML!

A simple mapping {"menuitem", ROLE_MENUITEM, eNameOkFromChildren, eNoValue, eNoReqStates, {"haspopup", BOOL_STATE, STATE_HASPOPUP}, {"checked", BOOL_STATE, STATE_CHECKED | STATE_CHECKABLE}, {"checked", "false", STATE_CHECKABLE}, END_ENTRY} Role constant OR’d states always used Attribute to state rules Name rule Value rule

Name computation eNameLabelOrTitle 1.First try aaa:labeledby 2.Try typical rules for element, e.g. 3.Finally try title attribute eNameOkFromChildren Loop through DOM subtree Append text or text equivalent for each node If image or using display:block, insert spaces (to avoid jammed-together words)

Special cased roles “application”, “dialog”, “document”, “alert” –The only roles allowed on / –Indicates class of document –Can also occur on any element “alert” inside of document –Fires alert event whenever made visible or changed “presentation” –Hides element from accessible hierarchy –If on table, cells w/o own role not exposed “menu”, “menuitem” –Show/hide translated to EVENT_MENUSTART, EVENT_MENUEND, EVENT_MENUPOPUPSTART, EVENT_MENUPOPUPEND

Mutations DOMNode Inserted / Removed Internal Layout Events EVENT_SHOW or EVENT_HIDE – plus – EVENT_REORDER on the container for changing child[ren]

Attribute changes aaa:valuenow → EVENT_VALUE_CHANGE aaa: checked expanded readonly disabled → EVENT_STATE_CHANGE required invalid xhtml2:role aaa:multiselect → EVENT_REORDER

Selection changes Change to attribute aaa:selection Multiselect If inside a container with multiselect=“true”, fire –EVENT_SELECTION_WITHIN on container –EVENT_SELECTION_ADD or _REMOVE on child Single select When aaa:selected=“true”, fire –EVENT_SELECTION

Relations Exposed in fields: “labeledby” → name “describedby” → description Exposed via relation support in APIs: Labeled_by Label_for Described_by Description_for

Role issues Not implemented in Firefox: Role extensibility via RDF –Expose role inheritance via new APIs, e.g. Schedule -> Calendar -> Table Navigation role API (unclear API model) –Natural role vs. navigation role Multiple roles –Unclear model & use cases –Strange possibilities, e.g. a radio button that is also a spreadsheet! Role issues: strange combos, conflicts, confusion

Other issues Not implemented in Firefox: Advanced relations, extensible relations –Needed for SVG accessibility Event handler descriptions –Firefox needs UI model … context menu? Issue: need more relation for diagrams Issue: how to define new relations? Issue: how to move on described handlers?

For more info: Authors: Role table: at-apis#roletable at-apis#roletable Source code: