Abstract
This document provides techniques for implementing the
checkpoints defined in "User Agent Accessibility Guidelines 1.0".
These techniques address the accessibility of
user interfaces, content rendering, program interfaces, and
languages such as HTML, CSS and SMIL.
This document is part of a series of accessibility documents
published by the Web Accessibility
Initiative.
Status of this document
This is a W3C Working Draft for review by W3C Members and other
interested parties. It is a draft document and may be updated,
replaced or obsoleted by other documents at any time. It is
inappropriate to use W3C Working Drafts as reference material or to
cite them as other than "work in progress". This is work in
progress and does not imply endorsement by, or the consensus of,
either W3C or Members of the WAI User Agent (UA) Working Group.
While User Agent Accessibility Guidelines 1.0 strives to be a stable document (as a W3C
Recommendation), the current document is expected to evolve as
technologies change and content developers discover more effective
techniques for designing accessible Web sites and pages.
This document has been produced as part of the Web Accessibility Initiative and
intends to improve user agent accessibility for all users. The goals
of the User Agent Guidelines
Working Group are discussed in the Working Group charter. A list of
the UA Working Group participants is
available.
A list of current W3C Recommendations and other technical documents
can be found at http://www.w3.org/TR.
Please send comments about this document to the public mailing list:
w3c-wai-ua@w3.org.
Each checkpoint in this document is assigned a priority
that indicates its importance for users.
- [Priority 1]
- This checkpoint must be implemented by user
agents as a native
feature or through compatibility with assistive
technology, otherwise one or more groups of users with disabilities will
find it impossible to access information. Satisfying
this checkpoint is a basic requirement for some individuals to be able to use
the Web.
- [Priority 2]
- This checkpoint should be implemented by user agents
as a native feature or through compatibility with assistive
technology, otherwise one or more groups of users will find it difficult
to access information. Satisfying this checkpoint
will remove significant barriers to accessing Web documents.
- [Priority 3]
- This checkpoint may be implemented by user
agents as a native feature or through compatibility with assistive
technology, to make it easier for one or more groups of users to
access information. Satisfying this checkpoint will improve access to
the Web for some individuals.
The checkpoints in this document are numbered to match their
numbering in User Agent Accessibility Guidelines 1.0.
This document is organized as follows:
- User Agent Accessibility
- This section introduces some general techniques to
promote accessibility in user agent functionality.
- Interfaces and Conventions
- This section addresses user agent support for standard programming
interfaces, operating system conventions, and W3C specifications.
- HTML Techniques
- This section explains how to implement features of HTML
(refer to [HTML40],
[HTML32]).
- CSS Techniques
- This section explains how to implement features of
CSS1 and CSS2 (refer to [CSS1],
[CSS2]).
- SMIL Techniques
- This section explains how to implement features of
SMIL (refer to [SMIL].
A checkpoint map has been provided
for navigation of the techniques. For each checkpoint, the map
includes its definition (as it appears in the "User Agent Accessibility Guidelines 1.0") and links
to applicable techniques for the checkpoint. In addition,
the beginning of each section of this document lists the checkpoints
that are addressed in that section.
This document contains a number of examples that illustrate
accessible solutions in HTML, CSS, etc. but also deprecated examples
that illustrate what content developers should not do. The deprecated
examples are highlighted and readers should approach them with caution
-- they are meant for illustrative purposes only.
Checkpoints in this section:
7.1,
7.2.
Checkpoints in this section:
7.3.
Checkpoints in this section:
1.2,
1.1, 1.3,
1.4, 1.5,
1.6
To ensure accessibility, users must have final
control over certain renderings.
For text and color:
Checkpoints in this section:
6.1,
6.2,
6.3,
6.4,
6.5, and
6.6.
[Ed. These may be rendered in a variety
of ways. How do we specify rendering?]
For images, applets, and animations:
Checkpoints in this section:
5.2 and 6.7.
For user agents rendering audio:
Checkpoints in this section:
6.11, 6.13, 6.9,
7.8, 7.6,
and 6.12.
For user agents rendering video:
Checkpoints in this section:
6.8, 6.10, 6.9, and
7.6.
For user agents rendering speech:
Checkpoints in this section:
6.15,
7.6, and 6.14.
User interface:
Checkpoints in this section:
6.16.
Checkpoints in this section:
5.1, 5.3, 5.4,
5.10, 5.9,
and 5.5.
[Ed. Add note here that while useful
to turn off support, say for all images, it's also useful
to be able to view one particular image.]
User agents may:
- Allow users to turn of support for spawned viewports
entirely
- Prompt them before spawning a viewport
For example, user agents may recognize the
HTML construct target="_blank" and spawn
the window according to the user's preference.
Checkpoints in this section:
5.14.
Period page refresh can be achieved with the following
markup in HTML:
<META http-equiv="refresh" content="60">
The user agent should allow the user to disable this
type of page refresh.
Checkpoints in this section:
5.13.
Although no HTML specification defines this behavior formally, some
user agents support the use of the META element to refresh the current
page after a specified number of seconds, with the option of replacing
it by a different URI. Instead of this markup, authors should use
server-side redirects (with HTTP).
User agents can provide a link to another page rather than
changing the page automatically.
Checkpoints in this section:
9.1.
Checkpoints in this section:
10.2 and 8.2.
Checkpoints in this section:
8.7
Checkpoints in this section:
8.4.
Sequential navigation includes all active elements. User
agents might provide other navigation mechanisms limited
to a particular type of element. For example "Find the next table"
or "Find the previous form". The following checkpoints suggest
some types of navigation.
- Serial navigation.
It is important that application developers maintain a logical
keyboard navigation order. The navigation order is defined as the
order of navigation among components
and component elements via the keyboard.
Generally users navigate by tabbing between components or groups
and using the arrow keys within a component group or component's elements.
The ability to tab between software components is a key feature in the
implementation of keyboard accessibility. (Cross-reference to keyboard access.)
Buttons of common functionality, such as a set of radio buttons used to set the
location of a panel (top left, bottom left, and so on.), should be grouped
together so
the first element of the visible group can be tabbed to.
Allow the user to use the arrow keys to navigate to each end of the group.
- How to indicate that something is in tabbing order in Java:
A component is inclusive in
the tabbing order when added to a panel and its isFocusTraversable()
method returns true. A component can be removed from the tabbing order
by simply extending the component, overloading this method, and
returning false.
- For active elements, one way or two way.
- In a table, up/down and left/right.
Direct navigation:
Excessive use of serial navigation can reduce the usability of
software for both disabled and non-disabled users. As a developer, you
need to determine the point at which tabbing gets in the way and
provide a keyboard alternative. This is done through the use of
keyboard Mnemonics and Accelerators.
- Need for element identification.
- Access by position in document.
- Access by element content (e.g., first letter).
- In a table, access to cell based on coordinates.
Checkpoints in this section:
8.6
- DOM is minimal (tree nav)
- Best navigation will involve a mix of source tree
information and rendered information.
- May use commonly understood document models rather
than strict DTD navigation. E.g., nesting headers in HTML.
- Goal of simplifying the structure view as much as possible.
- Allow the user to control level of detail/
view of structure.
- Depth first as well as breadth first possible.
Up/down nav as well.
- Navigation of synchronized multimedia: allow users to
stop, pause, fast forward, advance to the next clip, etc.
Checkpoints in this section:
8.3
Users of non-graphical rendering technologies and users with learning
disabilities, when browsing a page, should be able to quickly
determine the nature of a table located on a page. The able-bodied
user is able to visually examine the table and extract a sense of the
table contents with a quick scan of the cells. Users with blindness
or low vision, or
users who have difficulty translating printed material may not able to do
this. Providing table summary information, when first moving the
point-of-regard to a table allows the nature of a table to be easily
determined.
An auditory rendering agent, when the point-of-regard moves to a
table, might say, "Table: Tax tables for 1998," thus identifying the
nature of the table. The user could then use keyboard commands to move
the point of regard to the next logical block of information, or use a
different command to "burrow" into the table.
The "burrow" command should have an opposite "pop" command, which
would move the point of regard from an individual cell to the table as
a whole, so that the user can leave a table from any cell within it,
rather than navigating to the end.
If the user "pops" up to look over the summary information, it
should be possible to "burrow" back to the same cell.
When navigating a table that contains another table, this strategy
can avoid confusion. For example, if each row of a table
contained five cells, but the second row contained a 4x4 table in the
third cell, a user could be disoriented when the row did not end as
expected. However, when the point of regard moved to the third cell of
the table, a compliant browser would report that this was a table, and
describe its contents. The user would have the option of navigating to
the forth cell of the parent table, or burrowing into the table within
this cell.
When rendering tabular information, the fact that it is tabular
information should be apparent. For a graphical user agent, such
information is commonly made obvious by the border attribute. However,
for a non-graphical agent, such information must also be made
appreciable.
As the user agent shifts the point of regard to a table, it should
first provide information about the entire table. This information
might be the Caption, Title, or Summary information of the
table. Access to this information would allow the user to determine
whether or not to examine the contents of the table, or to move the
point of regard to the next block of content.
In many data tables, the meaning of the contents of a cell are
related to the contents of adjacent cells. For example, in a table of
sales figures, the sales for the current quarter might be best
understood in relation to the sales for the previous quarter, located
in the adjacent cell.
In order to provide access to contextual information for
individuals using non-graphical browsers, or for individuals with certain
types of learning disabilities, it is necessary for the user agent to
allow the point of regard to be moved from cell to cell, both
right/left and up/down via keyboard commands.
The most direct method of performing such navigation would be via
the cursor keys, though other navigation strategies might be used.
Users of graphical browsers can easily locate cells within a table
that are at the intersection of a row and column of interest. To
provide equivalent access to users of non-graphical browsers, equivalent
means of navigation should be provided. The search function of a
browser will allow the user to locate key terms within a table, but
will not allow the user to find cells that are at the intersection of
rows and columns of interest.
Techniques:
- An advanced search mode might provide entries for header information,
allowing the user to find information at the intersection of columns and
rows using the key terms.
-
A search mode might allow the user to search for key terms that are related
to key header terms, allowing searches to be restricted to specific rows or
headers within a table.
The header information visible in a TH cell may be abbreviated,
in which case it should be user preference to see the "abbr"
value if any or the full contents.
Axis information may also help the user search into confined
portions of the table.
Column groups and row groups are other confining partitions of a
table in which a search may be limited.
Software:
Checkpoints in this section:
8.5.
- Element content
- Attribute content
- Patterns
- Search the source view.
- For forms, allow users to find required controls.
Allow users to search on labels as well as content of some controls.
- For multimedia presentations:
- Allow users to search and examine
time-dependent media elements and links in a time-independent manner.
For example, present a static list of time-dependent links.
- Allow users to search closest timestamp from a text
stream or a media elements
or links and find other media elements active at the same time.
- Allow users to view a list of all media elements or
links of the presentations sorted by start or end time or alphabetically.
Checkpoints in this section:
8.1, 9.3.
Checkpoints in this section:
10.4 and [##Tnotify-doc-nav].
Checkpoints in this section:
9.4.
Checkpoints in this section:
9.5 and 9.6.
Checkpoints in this section:
9.8 and 9.7.
Checkpoints in this section:
9.9, 10.6.
[Ed. Talk about "for" attribute for LABEL]
Checkpoints in this section:
9.1.
Checkpoints in this section:
10.1, 10.3.
Checkpoints in this section:
2.1.
Checkpoints in this section:
2.2,
2.3,
2.6.
- How to specify in HTML
- Visibility of.
- Documentation of. At a minimum: list in README file
that comes with software.
Some suggestions:
- Allow the user to
use the find command to jump to a link instead of tabbing
there. It would save a lot of keystrokes, especially if one programs the
keystrokes as macros. But this requires that focus moves to the location
that find highlights.
- Allow the user to use find command to jump to text in buttons.
- Allow the user to use find command to jump to image by searching
on its alternative content (e.g., "alt" attribute).
Some reserved keyboard shortcuts are listed in the appendix on accessibility features of some operating
systems.
Checkpoints in this section:
9.10
- Profiles
- Default values
- Device-independent configuration
Checkpoints in this section:
4.1
A configuration profile allows users to save their user agent
settings and re-apply them easily, which is particularly valuable in an
environment where several people may use the same machine.
The user should be able to easily transfer their profiles between
installations of the same user agent. One way to facilitate this is to
follow operating system conventions for profiles where applicable.
Users should be able to switch rapidly between profiles (or the
default settings). This is helpful when:
- Several people use the same machine.
- A user with a disability is being helped by
able-bodied user who may not recognize the information
being displayed using the user's profile.
User agents may apply a profile when the user logs
in. They may also allow users to apply settings
interactively, for example by allowing them to choose
from a list of named profiles in a menu.
Sample profiles (based on common usage scenarios)
can assist users in the initial set up of the user
agent. These profiles can serve as models and may be copied and
fine-tuned to mean an individual's particular needs.
Checkpoints in this section:
2.4, 2.8,
2.7,
and 2.5
[Ed. Discuss keyboard access here. How
access is specified in HTML: "accesskey".]
[Ed. New section. Users must be allowed
to control keyboard configuration based on specific needs.
For poor motor control, keys far apart. For poor
mobility, keys close together. General principle: fewest
keystrokes, short distance to move.]
Checkpoints in this section:
4.2.
Checkpoints in this section:
3.2.
Universal design means that access to features that help
accessibility should be integrated into normal menus. User agents
should avoid regrouping access to accessibility features into
specialized menus. Documentation includes anything that explains how
to install, get help for, use, or configure the product. Users must
have access to installation information, either in electronic form
(diskette, over the Web), by fax, or by telephone.
Checkpoints in this section:
3.3.
Include references to accessibility features in these parts of the
documentation:
- Indexes.
Include terms related to product accessibility in the documentation index
(e.g., "accessibility", "disability" or "disabilities").
- Tables of Contents
Include terms related to product accessibility in the documentation table
of contents (e.g., features that promote accessibility)
- Include instructions on how to modify all user
configurable defaults and preferences
(e.g, images, video, style sheets, and scripts) as specified
by the documentation.
- Include a list of all
keyboard shortcuts in the accessibility section of
the documentation.
Checkpoints in this section:
3.1.
Documentation created in HTML should follow the Web Content Accessibility Guidelines.
Electronic documentation created in open standard formats such as
HTML and ASCII can often be accessed in the user's choice of
application such as a word processor or browser. Accessing
documentation in familiar applications is particularly important to
users with disabilities who must learn the functionalities of their
tools, be able to configure them for their needs, and to be compatible
with assistive technology. Electronic documentation should not be
provided in proprietary formats.
Users with print impairments may need or desire documentation in
alternative formats such as Braille, large print, or audio tape. User
agent manufacturers may provide user manuals in alternative
formats. Documents in alternative format documents can be created by
agencies such as Recording for the
Blind and Dyslexic and the National
Braille Press.
User instructions should be created in an input device-independent
manner. Provide instructions for using or configuring the user agent
in a manner that can be understood by a user of any input device
including a mouse or keyboard. For example, "Click on the Home button
on the toolbar or select "Home" from the Go menu to return to the Home
page. "
Checkpoints in this section:
12.6
Develop the UA User Interface (UI) with standard interface
components per the target platform(s). Most major operating system
platforms provide a series of design and usability guidelines, these
should be followed when possible (see platforms below).
These checklists, style guides, and human interface guidelines
provide very valuable information for developing applications (e.g.,
UAs) for any platform/operating system/GUI. If your custom interface
cannot provide information or operation as defined above, then you may
need to design your UA using any additional options provided by that
platform.
For instance, software should use the standard
interface for keyboard events rather than working around it.
Evaluate your standard interface components on the target
platform against any built in operating system accessibility
functions (see Appendix 8) and be sure your UA operates
properly with all these functions.
For example, take caution with the following:
- Microsoft Windows supports an accessibility function called
"High Contrast". Standard window classes and controls automatically
support this setting. However, applications created with custom
classes or controls must understand how to work with the "GetSysColor"
API to ensure compatibility with High Contrast.
- Apple Macintosh supports an accessibility function called "Sticky Keys".
Sticky Keys operates with keys the operating system understands to be
defined as modifier keys, and therefore a custom UA control should not
attempt to define a new modifier key.
-
"Macintosh Human Interface Guidelines" [APPLE-HI]
Apple Computer Inc.
-
"IBM Guidelines for Writing Accessible Applications Using 100% Pure Java" [JAVA-ACCESS].
-
"An ICE Rendezvous Mechanism for X Window System Clients" [ICE-RAP].
-
"Information for Developers About Microsoft Active Accessibility" [MSAA].
-
"The Inter-Client communication conventions manual" [ICCCM].
-
"Lotus Notes accessibility guidelines" [NOTES-ACCESS]
-
"Java accessibility guidelines and checklist" [JAVA-CHECKLIST]
-
"The Java Tutorial. Trail: Creating a GUI with JFC/Swing" [JAVA-TUT].
-
"The Microsoft Windows Guidelines for Accessible Software Design" [MS-SOFTWARE].
Ensure your UA can be operated using the standard interfaces
on the target platform(s). Some example tests include:
- All functional UI components must be keyboard accessible and
therefore, must be oper-able by software or devices which emulate
a keyboard (Use SerialKeys [see Appendix 8] and/or voice recognition
software to test keyboard event emulation.). Individuals with
varying physical abilities should be able to access your UA using a
SerialKeys device or using voice recognition, provided it is keyboard
accessible.
- All functional UI components must track selection and focus. Individuals
who have low vision and use screen magnification software should be
able to follow highlighted item(s) (e.g., selection), text input location
(e.g., sometimes referred to as the "caret"), and any control or component
with focus, if your UA exposes these properties correctly.
- All functional UI components must provide readable "text" names or
labels, even when not visible. Providing this type of information in
your UA along with the prior two examples, means that individuals
who are blind and accessing your UA using screen reading software
and/or a Braille output device should be able to operate and navigate
within it.
- All functional UI components which convey important information
using sound, also need to provide alternate, parallel visual representation
of the information for individuals who are deaf, hard of hearing, or
operating your UA in an environment where the use of sound isn't
practical.
Checkpoints in this section:
12.1, 12.2, 12.3, 12.5.
The operating system application programming interfaces (APIs) that support
accessibility are designed to provide a bridge between the standard user
interface supported by the operating system and alternative user
interfaces developed by third-party assistive technology vendors to
provide access to persons with disabilities. Applications supporting these
APIs are therefore generally more compatible with third-party assistive
technology.
The User Agent Accessibility Guidelines Working Group strongly
recommends using and supporting APIs that improve accessibility and
compatibility with third-party assistive technology. Third-party
assistive technology can use the accessibility information provided by
the APIs to provide an alternative user interface for various
disabilities.
The following is an informative list of currently public APIs that support
accessibility:
- Microsoft Active Accessibility ([MSAA])
in Windows 95/NT versions.
- Sun Microsystems Java Accessibility API ([JAVAAPI]) in Java Code.
Many operating systems have built-in accessibility features
for improving the usability of the standard operating system by
persons with disabilities. When designing software that runs above an
underlying operating system, developers should ensure that the
application:
- Makes use of operating system level features.
See the appendix of
accessibility features for some common operating systems.
- Inherits operating system settings related to
accessibility. Pertinent settings include font and color information
as well as other pieces of information discussed in this document.
Write output to and take input from standard system APIs rather
than direct from hardware controls where possible. This will enable
the I/O to be redirected from or to assistive technology devices - for
example, screen readers and braille devices often redirect output (or
copy it) to a serial port, while many devices provide character input,
or mimic mouse functionality. The use of generic APIs makes this
feasible in a way which allows for interoperability of the assistive
technology with a range of applications.
Checkpoints in this section:
12.4.
Use DOM Level 1 [DOM1] for access to HTML and XML
document information. However, as the DOM specification indicates:
The DOM Level 1 does not include mechanisms to access and
modify style specified through CSS 1. Furthermore, it does not define
an event model for HTML documents. This functionality is planned to be
specified in a future Level of this specification.
It is important for user agents to provide access to
style and scripting information in a document, so the
following techniques should be used to achieve this.
Use standard rather than custom controls when designing user agents.
Third-party assistive technology developers are more likely able to access
standard controls than custom controls. If you must use custom controls,
review them for accessibility and compatibility with third-party assistive
technology.
[Ed. To be completed.]
[Ed. Link to W3C Note on HTML Accessibility Features
instead of this section]
Checkpoints in this section:
11.2, 11.1
Following is a list of accessibility features in HTML:
- Support the "longdesc" attribute defined
for IMG elements ([HTML 4.0], section 13.2).
This attribute may be used to attach additional descriptive information
to images.
[Priority 1]
- Support the CAPTION element ([HTML40],
section 11.2.2) for rich table captions. [Priority 2]
- Support the ACRONYM and ABBR elements
([HTML40],
section 9.2.1) for acronyms and abbreviations. [Priority 2]
- Support the "summary" attribute for TABLE
([HTML40], section 11.2.1) for table summary
information. [Priority 2]
- Support the NOSCRIPT element ([HTML40],
sections 18.3.1 and 16.4.1) for accessible alternatives to scripts.
[Priority 2]
- Support the NOFRAMES element ([HTML40],
sections 18.3.1 and 16.4.1) for accessible alternatives to frames. [Priority 2]
- Support the "lang" attribute ([HTML40],
section 8.1). [Priority 2]
- Support the "tabindex" attribute ([HTML40],
section 17.11.1) for assigning the order of keyboard navigation within a
document. [Priority 3]
- Support the "accesskey" attribute ([HTML40],
section 17.11.2) for assigning keyboard commands to
active components such as links, and form
controls. [Priority 3]
Checkpoints in this section:
7.1.
User agents must be able to recognize sources of
alternative representations of content.
- For the IMG element: The "alt", "title", and "longdesc" attributes
- For the OBJECT element: The content of the element and the "title" attribute.
- For the APPLET element: The "alt" attribute and the content
of the element.
- For the AREA element: The "alt" attribute.
- For the INPUT element: The "alt" attribute.
- For the ACRONYM and ABBR elements: The "title" attribute
may be used for the acronym or abbreviation expansion.
- For the TABLE element, the "summary" attribute
- For frames, the NOFRAMES element and the "longdesc" attribute
on FRAME and IFRAME.
- For scripts, the NOSCRIPT element.
Checkpoints in this section:
5.6 and 5.7.
User agents that recognize the following sources of
blinking text and animations must enable users to freeze that text.
- In HTML
-
- The BLINK element. Note. The BLINK
element is not defined by a W3C specification.
- The MARQUEE element. Note. The MARQUEE
element is not defined by a W3C specification.
- In CSS
-
- The 'blink' value of the 'text-decoration' property.
- In GIF animated images.
- To be completed.
Checkpoints in this section:
7.4, 7.5.
[Ed. How to handle null/absent alt.]
Checkpoints in this section:
7.7 and 6.9.
Scenario-video showing professor
writing complex equations and graphs on the overhead and discussing them but
not describing what he/she actually wrote on the overhead. Without
description this would be inaccessible to people with visual impairments.
This could be generalize to any video presentation of visually rich or
complex information where the visually presented information is critical to
the understanding of the presentation.
Checkpoints in this section:
7.7.
Checkpoints in this section:
5.12 and 5.11.
[Ed. See
Scott's suggestions]
- In HTML, content of NOFRAMES.
- Otherwise, list of frames. Use "title" as name of
frame, otherwise "name".
In HTML, "summary" attribute. Also, the "abbr" attribute
for headers (see the section on table cells and headers).
Checkpoints in this section:
7.9 and 7.10.
[Ed. Talk about CSS pseudo-classes
for :hover]
[Ed. Talk about using :before
to clearly indicate that something is a link
(e.g., 'A:before { content : "LINK:" }')]
Tables were designed to structure relationships among data. In
graphical media, tables are often rendered on a two-dimensional grid, but
this is just one possible interpretation of the data. On the Web, the
HTML TABLE element has been used more often than not to achieve a
formatting effect ("layout tables") rather than as a way to structure
true tabular data ("data tables")
Layout tables cause problems for some screen readers and when
rendered, confuse users. Even data tables can be difficult to
understand for users that browse in essentially one dimension,
i.e. for whom tables are rendered serially. Large tables pose
particular problems since remembering cell position and header
information becomes more difficult as the table grows.
User agents facilitate browsing by providing access to specific
table cells and their associated header information. How headers are
associated with table cells is markup language-dependent.
Tabular navigation is required by people with visual impairments
and some types of learning disabilities to determine the content of a
particular cell and spatial relationships between cells (which may
convey information). If table navigation is not available users with
some types of visual impairments and learning disabilities may not be
able to understand the purpose of a table or table cell.
Properly constructed data tables generally have distinct TH head
cells and TD data cells. The TD cell content gains implicit
identification from TH cells in the same column and/or row.
For layout tables, a user agent can assist the reader by indicating
that no relationships among cells should be expected. Authors should
not use TH cells just for their formatting purpose in layout tables,
as those TH cells imply that some TD cells should gain
meaning from the TH cell content.
When a table is "read" from the screen, the contents of multiline
cells may become intermingled. For example, consider the following
table:
This is the top left cell This is the top right cell
of the table. of the table.
This is the bottom left This is the bottom right
cell of the table. cell of the table.
If read directly from the screen, this table might be rendered
as "This is the top left cell This is the top right cell", which
would be confusing to the user.
A user agent should provide a means of determining the contents of
cells as discrete from neighboring cells, regardless of the size and
formatting of the cells. This information is made available through
the DOM ([DOM1]).
The contents of a cell in a data table are generally only
comprehensible in context (i.e., with associated header information,
row/column position, neighboring cell information etc.). User agents
should provide users with header information and other contextual
agent. Techniques include:
- Provide this information through an API.
- Ignore table markup entirely. This may assist some screen readers.
- Render cells as blocks. This may assist some screen readers.
Using this strategy, the user agent might render individual cells with the
relevant top and side headers attached.
- Allow navigation and querying of cell/header information.
When the point of regard is on an individual cell, the user would be able to
use a keyboard command to receive the top and left header information for
that cell. The user agent should appropriately account for headers that
span multiple cells.
- Allow users to read one table column or row at a time, which
may help them identify headers.
[Ed. Discuss repair strategies
for finding header information?]
Since not all tables are designed with the header information, a conforming
user agent should provide, as an option, a "best guess" of the header
information for a cell. Possible strategies include:
-
Consider the top and left-most cells of a column or row to be header
information.
-
Consider upper and left-most cells which have formatting markup to be header
information.
The user may choose the form and amount of this information,
possibly announcing the row heads only once and then the column head
or its abbreviation ("abbr") to announce the cell content.
[Ed. Define algorithm
for finding "header information" here. Does it come
from THEAD, TH, attributes, HTML 4.0 algorithm
for finding header information, etc. Allow the user to
choose either "abbr" or what is calculated by the header
algorithm.]
Non-graphical rendering of information by a browser or an assistive
technology working through a browser will generally not render more
than a single cell, or a few adjacent cells at a time. Because of
this, the location of a cell of interest within a large table may be
difficult to determine for the users of non-graphical rendering.
In order to provide equivalent access to these users, compliant
browsers should provide a means of determining the row and column
coordinates of the cell having the point of regard via keyboard
commands. Additionally, to allow the user of a non-graphical rendering
technology to return to a cell, the browser should allow a means of
moving the point of regard to a cell based on its row and column
coordinates.
At the time the user enters a table, or while the point of regard
is located within a table, the user agent should allow an assistive
technology to provide information to the user regarding the dimensions
(in rows and columns) of the table. This information, in combination
with the summary, title, and caption, can allow the user with a
disability to quickly decide whether to explore the table of skip over
it.
Dimensions is an appropriate term, though dimensions needn't be
constants. For example a table description could read: "4 columns for
4 rows with 2 header rows. In those 2 header rows the first two
columns have "colspan=2". The last two columns have a common header
and two subheads. The first column, after the first two rows, contains
the row headers.
Some parts of a table may have 2 dimensions, others three, others
four, etc. Dimensionality higher than 2 are projected onto 2 in a
table presentation.
User agents should use the algorithm to calculate
header information provided in the HTML 4.0 specification
([HTML40], section 11.4.3).
[Ed. The following issues were raised
by Harvey Bingham.]
- TH cells on both the left and right of the table need to be considered.
- For TH cells with "rowspan" set:
the content of those TH cells must be considered for each of the N-1
rows below the one containing that TH content.
- An internal TH in a row surrounded on either side
by TDs has no means to specify
to which (row or column) that TH overrides what existed to its left
or above it.
- Finding column header cells assumes they are all above the TD cell
to which they apply.
- A TH with "colspan" set needs to be included in the list of TH for the M-1
columns to the right of the column in which the TH is found.
Checkpoints in this section:
5.12,
6.16,
and
9.2
Checkpoints in this section:
9.1.
Possible solutions:
- Provide info through an API.
- Frames as blocks.
- Frameset as list of links to individual frames
(based on frame name).
- NOFRAMES content (when?)
Checkpoints in this section:
5.8.
Certain elements of the document language may have associated event
handlers that are triggered when certain events occur. User agents
must be able to identify those elements with event handlers statically
associated (i.e., associated in the document source, not in a script).
- In HTML
- All of the attributes beginning with the prefix "on": "onblur", "onchange", "onclick", "ondblclick", "onkeydown", "onkeypress", "onkeyup", "onload", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onreset", "onselect", "onsubmit", and "onunload".
- [Ed. Other sources? ]
- [Ed. To be completed.]
[Ed. Talk about EMBED? Charles
recommends that it be put inside an OBJECT if used.]
Checkpoints in this section:
11.2, 11.1
The accessibility features of Cascading Style Sheets
(refer to CSS, level 1 and
CSS, level 2) are described
in [CSS-ACCESS].
Cascading Style Sheets may be part of a source document or linked
externally. Stand-alone style sheets are useful for implementing user profiles in public access computer
environments where several people use the same computer. User profiles
allow for convenient customization and may be shared by a group.
[Ed. Link to W3C Note on SMIL Accessibility Features
instead of this section]
Checkpoints in this section:
11.2, 11.1
[Ed. Ensure that in SMIL, users can stop
temporal links. See proposal from Marja.]
Accessible presentation means here that the information can be
easily accessed by using different media and that the user can easily
control whether to show the information or not.
- Support accessible presentation of "title", "abstract" and "author"
attributes defined for SMIL synchronization elements.
- Support accessible presentation of "alt", "londesc", "title", "abstract"
and "author" attributes defined for SMIL media object elements.
- Support an interface for turning captions on and off. Captions are
defined either by using "system-overdub-or-caption" attribute with value
"caption" or "system-captions" attribute with value "on".
- Support an interface for turning overdubs on and off. Overdubs are
defined by using "system-overdub-or-caption" attribute with value "overdub".
- When captions are shown support a caption region. According to user
preferences this could be embedded in the SMIL layout or shown in a
separate window.
- When user prefers to, support a stable, time independent view to the
links so that time dependent links can be easily searched.
- Offer a way to change system values affecting to
"system-bitrate", "system-screen-size" and "system-depth" attributes
since these can have an affect to the user interface. In addition,
give feedback of the values in a form that list only those selections
that can have an effect to the user interface. For instance, if the
SMIL author has defined three different user interfaces for bitrates
below 1200, between 1200 and 2400, and over 24000 the user should be
given a selection of these three choices not just any bitrate number.
Several of the more popular mainstream operating systems now
include a common suite of built-in accessibility features that are
designed to assist individuals with varying abilities. Despite
operating systems differences, the built-in accessibility features use
a similar naming convention and offer similar functionalities, within the
limits imposed by each operating system (or particular hardware
platform).
The following is a list of built-in accessibility features from
several platforms:
- StickyKeys
- These allow users to perform a multiple simultaneous
key sequence by pressing and releasing each key in sequential order. StickyKeys
is designed to work with only those keys defined as modifier keys. Modifier
keys are pressed in combination with other keys, to change the outcome of the
second (or more) pressed keys. For example, the SHIFT key is defined as a
modifier key, since it is commonly used to create upper case characters. Each
operating system or hardware platform typically defines a set of keys which can
act as modifier keys. The most common modifier keys include SHIFT, CONTROL, and
ALTERNATE.
- MouseKeys
- These allow users to move the mouse cursor and activate
the mouse button(s) from the keyboard.
- RepeatKeys
- These allow users to set how fast a key repeats (e.g.,
sometimes referred to as typematic rate) when the key is held pressed (e.g.,
Repeat Rate), and also allows control over how quickly the key starts to repeat
after the key has been pressed (e.g., delay Until Repeat). Key repeating may
also be eliminated.
- SlowKeys
- These instruct the computer not to accept a key as
pressed until it has been pressed and held down for a specific user adjustable
length of time.
- BounceKeys
- These prevent extra characters from being typed if
the user bounces (e.g., tremor) on the same key when
pressing or releasing it.
- ToggleKeys
- These provide an audible indication for the status
of keys that have a toggled state (e.g., keys that maintain status after
being released). The most common toggling keys include Caps Lock, Num Lock, and
Scroll Lock.
- SoundSentry
- These monitor the operating system and applications
for sounds, and attempt to provide a graphical indication when a sound is being
played. Older versions of Sound Sentry may have flashed the entire display
screen for example, while newer versions of SoundSentry provide the user with a
selection of options, such as flashing the active window or flashing the active
window caption bar.
The next three built in accessibility features are not as commonly
available as the above group of features, but are included here for
definition, completeness, and future compatibility.
- ShowSounds
- These are user setting or software switches that are
available for the operating system and application (including user agents)
APIs to read, to notify them that the user wishes audio information to also be
presented in a graphical format.
- High Contrast
- These automatically change the display fonts and
colors to choices which should provide for easier reading.
- TimeOut
- These allow the built-in accessibility features to
automatically turn off if the computer is unused for a specified length of
time, and is intended for use when the computer is in a public setting (e.g.,
library). TimeOut might also be referred to as reset or automatic
reset.
The next accessibility feature listed here is not considered to be
a built in accessibility feature (since it only provides an alternate
input channel) and is presented here only for definition,
completeness, and future compatibility.
- SerialKeys
- These allow a user to perform all keyboard and
mouse functions from an external assistive device (such as communication aid)
communicating with the computer via a serial character stream (e.g., serial
port, IR port, etc.) rather than or in conjunction with, the keyboard, mouse,
and other standard input devices/methods.
Microsoft Windows 95, Windows 98, and Window NT
4.0
For information about Microsoft keyboard configurations
(Internet Explorer, Windows 95, Windows 98, and more), refer
to [MS-KEYBOARD].
The following accessibility features can be adjusted from the Accessibility
Options Control Panel:
- StickyKeys: modifier keys include SHIFT, CONTROL, and ALTERNATE.
Keyboard Mappings: 5 consecutive clicks of Shift key turns on/off
StickyKeys.
- FilterKeys: grouping term for SlowKeys, RepeatKeys, and
BounceKeys. Shift key held down for 8 seconds
turns on/off SlowKeys and RepeatKeys.
- MouseKeys: Left shift + left alt + numlock, turns on/off MouseKeys
- ToggleKeys: Mumlock key held for 5 seconds, turns on/off ToggleKeys
- SoundSentry:
- ShowSounds:
- Automatic reset: term used for TimeOut
- High Contrast: left shift + left alt + print screen, turns on/off High Contrast.
- SerialKeys:
Other keyboard shortcuts:
- 6 consecutive clicks of Control key
turns on/off screen reader numeric keypad.
- 6 consecutive clicks of Alt key
reserved for future use.
Additional accessibility features available in Windows 98:
-
- Magnifier
- This is a windowed, screen enlargement and enhancement program used
by persons with low vision to magnify an area of the graphical display (e.g., by
tracking the text cursor, focus, etc.). Magnifier can also invert the colors
used by the system within the magnification window.
- Accessibility Wizard
- This is a setup tool intended to assist a person with
making choices which setting up the accessibility features on a workstation.
Apple Macintosh Operating System
The following accessibility features can be adjusted from the Easy
Access Control panel (Note: Apple convention uses a space within the
accessibility feature names.)
- Sticky Keys: modifier keys include the SHIFT, OPEN APPLE (COMMAND),
OPTION (ALT) and CONTROL keys.
- Slow Keys:
- Mouse Keys:
The following accessibility features can be adjusted from the Keyboard
Control Panel.
- Key Repeat Rate (e.g., part of RepeatKeys)
- Delay Unit Repeat (e.g., part of RepeatKeys)
The following accessibility feature can be adjusted from the Sound or
Monitors and Sound Control Panel (depends upon which version of the OS).
- Adjusting the volume to off or mute causes the Macintosh to flash the
title bar whenever the operating system detects a sound (e.g., SoundSentry)
Additional accessibility features available for the Macintosh OS:
- CloseView
- This is a full screen, screen enlargement and enhancement program
used by persons with low vision to magnify the information on the graphical
display, and it can also change the colors used by the system.
- SerialKeys
- This is available as freeware from Apple and several other
Web sites.
AccessX, X Keyboard Extension (XKB), and the X Window System
(Note: AccessX became a supported part of the X Window System X Server with
the release of the X Keyboard Extension in version X11R6.1)
The following accessibility features can be adjusted from the AccessX
graphical user interface X client on some DEC, SUN, and SGI operating systems.
Other systems supporting XKB may require the user to manipulate the features
via a command line parameter(s).
- StickyKeys: modifier keys are platform dependent, but usually include the
SHIFT, CONTROL, and META keys.
- RepeatKeys:
- SlowKeys:
- BounceKeys:
- MouseKeys:
- ToggleKeys:
DOS (Disk Operating System)
The following accessibility features are available from a freeware program
called AccessDOS, which is available from several Internet Web sites including
IBM, Microsoft, and the Trace Center, for either PC-DOS or MS-DOS versions 3.3
or higher.
- StickyKeys: modifier keys include the SHIFT, CONTROL, and ALTERNATE keys.
- Keyboard Response Group: grouping term for SlowKeys, RepeatKeys, and
BounceKeys
- MouseKeys:
- ToggleKeys:
- SoundSentry (incorrectly name ShowSounds):
- SerialKeys:
- TimeOut:
There are several methods for developers to accomplish this. Most
of these methods fall into four categories:
- Launch the entire AT inside the address space of the (UA) browser
- Launch some part of the AT, a piece of stub code, a DLL, a Browser Helper
Object [special DLL], etc., inside the address space of the (UA) browser
- Write your own combined UA/AT (e.g., pwWebSpeak)
- Out-of-process access to the DOM
These methods are ordered as developments within a rapidly changing
technology with the most recent advances/methods listed first.
Loading assistive technologies for direct access to User Agent DOMs
Note. This method and the method described in the
next section are very similar. What differs is the amount of, or
capability of, the AT that actually gets loaded in the same process or
address space as the User Agent.)
Access to application specific data across process boundaries might
be costly in terms of performance. Therefore, user agents may wish to
provide a mechanism to load the entire assistive technology (AT), into
the process space of the application as a separate thread with direct
access to the DOM.
Determining the Assistive Technologies to load
One technique is to store a reference to an assistive technology in
a system registry file or, in the case of Jave, a properties
file. Registry files are common among many operating system
platforms.
In Windows you have the system registry file. On OS/2 you have the
system.ini file and on distributed network client networks you often
have a system registry server that an application
running on the network client computer can query.
In Java 2, the existence of an "accessibility.properties" file
causes the system event queue to examine the file for assistive
technologies required for loading. If the file contains a property
called "assistive_technologies", it will load all registered assistive
technologies and start them on their own thread in the Java Virtual
Machine that is a single process. An example entry for Java is as
follows:
assistive_technologies=com.ibm.sns.svk.AccessEngine
In Windows, a similar technique could be followed by storing the
name of a Dynamic Link Library (DLL) for an assistive technology in a
designated assistive technology key name, AT pair. An example entry
for Windows could be as follows:
HKEY_LOCAL_MACHINE\Software\Accessibility\DOM
"ScreenReader, VoiceNavigation"
Attaching the Assistive Technologies to the DOM.
Once the assistive technology is determined from the registry, any
user agent on the given operating system can now determine if an
assistive technology needs to be loaded with their application and
load it.
On a non-Java platform, a technique to do this would be to create a
separate thread with a reference to the User Agent's DOM using a
Dynamic Link Library (DLL). This new thread will load the DLL and call
a specified DLL entry name with a pointer to the DOM interface. The
assistive technology's task will then run until such time as is
necessary to end communication with the DOM.
Once loaded, the assistive technology can monitor the DOM as
needed. The assistive technology has the option of communicating with
a main assistive technology of its own and process the DOM as a
caching mechanism for the main AT application or be used as a bridge
to the DOM for the main assistive technology.
In the future, it will be necessary to provide a more comprehensive
reference to the application that not only provides direct access to
it's client area DOM, but also multiple DOM's that it is processing
and an event model for monitoring them.
Example Technique: Java's Direct Access
Java is a working example where the direct access to application
components is performed in a timely manner. Here, an assistive
technology running on a separate thread monitors GUI events such as
focus changes. Focus changes give the AT notification of which
component object has focus. The AT can communicate directly with all
components in the application by walking the parent/child hierarchy
and connecting to each component's methods and monitor events
directly. In this case an AT has direct access to component specific
methods as well as those provided for by the Java Accessibility
API. There is no reason that a DOM interface to UA components could
not be provided
In Java 1.1.x, Sun's Java access utilities load an assistive by
monitoring the Java awt.properties file for the presence of assistive
technologies and loads them as shown in the folowing code example:
import java.awt.*;
import java.util.*;
String atNames = Toolkit.getProperty("AWT.assistive_technologies",null);
if (atNames != null) {
StringTokenizer parser = new StringTokenizer(atNames," ,");
String atName;
while (parser.hasMoreTokens()) {
atName = parser.nextToken();
try {
Class.forName(atName).newInstance();
}
catch (ClassNotFoundException e) {
throw new AWTError("Assistive Technology not found: " + atName);
}
catch (InstantiationException e) {
throw new AWTError("Could not instantiate Assistive" +
" Technology: " + atName);
}
catch (IllegalAccessException e) {
throw new AWTError("Could not access Assistive" +
" Technology: " + atName);
} catch (Exception e) {
throw new AWTError("Error trying to install Assistive" +
" Technology: " + atName + " " + e);
}
}
}
In the above code example, the function
Class.forName(atName).newInstance() creates a new instance of the
assistive technology. The constructor for the assistive technology
will then be responsible for monitoring application component objects
by monitoring system events.
In the following code example, the constructor for the
assistive technology "Access Engine," adds a focus change listener
using Java accessibility utilities. When the assistive technology is
notified of an objects gaining focus it has direct access to that
object. If the Object, o, implemented a DOM interface the assistive
technology would now have direct access to the DOM in the same process
space as the application.
import java.awt.*;
import javax.accessibility.*;
import com.sun.java.accessibility.util.*;
import java.awt.event.FocusListener;
class AccessEngine implements FocusListener {
public AccessEngine() {
//Add the AccessEngine as a focus change listener
SwingEventMonitor.addFocusListener((FocusListener)this);
}
public void focusGained(FocusEvent theEvent) {
// get the component object source
Object o = theEvent.getSource();
// check to see if this is a DOM component
if (o instanceof DOM) {
...
}
}
public void focusLost(FocusEvent theEvent) {
// Do Nothing
}
}
In this example, the assistive technology has the option of running
standalone or acting as a cache for a bridge that communicates with a
main assistive technology running outside the Java virtual
machine.
Loading part of the assistive technologies for direct access
to User Agent DOMs
Access to application specific data across process boundaries might
be costly in terms of performance. Therefore, user agents may wish to
provide a mechanism to load part of the assistive technology (AT) into
the process space of the application as a separate thread, with direct
access to the DOM, to provide the specific functionality they require.
This could consist of a piece of stub code, a DLL, a Browser Helper
Object, etc. An example of how to do this follows.
Browser Helper Objects
In order to attach to a running instance of Internet Explorer 4.0,
you can use a "Browser Helper Object." A "Browser Helper Object" is a
DLL that will attach itself to every new instance of Internet Explorer
4.0 (only if you explicitly run iexplore.exe). You can use this
feature to gain access to the object model of a particular running
instance of Internet Explorer. You can also use this feature to get
events from an instance of Internet Explorer 4.0. This can be
tremendously helpful when many method calls need to be made to IE, as
each call will be performed much more quickly than the out of process
case.
There are some requirements when creating a Browser Helper Object
- The application that you create must be an in-proc server (that
is, DLL).
- This DLL must implement IObjectWithSite.
- The IObjectWithSite::SetSite() method must be implemented. It is
through this method that your application receives a pointer to
Internet Explorer's IUnknown. (Internet Explorer actually passes a
pointer to IWebBrowser2 but the implementation of SetSite() receives a
pointer to IUnknown.) You can use this IUnknown pointer to automate
Internet Explorer or to sink events from Internet Explorer.
- It must be registered as a Browser Helper Object as described
above.
For more information, please check out:
http://support.microsoft.com/support/kb/articles/Q179/2/30.asp.
http://msdn.microsoft.com/library/techart/bho.htm
Java Access Bridge
In order for native Windows ATs to gain access to Java applications
without the creating a Java native solution Sun Microsystems provides
the "Java Access Bridge." This bridge is loaded as an AT as
described in section 6.1.3. The bridge uses a Java Native Invocation
(JNI) to Dynamic Link Library) (DLL) communication and caching
mechanism that allows a native assistive technology to gather and
monitor accessibility information in the Java environment. In this
environment, the AT determines that a Java application or applet is
running and communicates with the Java Access Bridge DLL to process
accessibility information about the application/applet running in the
Java Virtual Machine.
Loading assistive technologies "as" the User Agent with
access to the DOMs
Specialized user agents might also include the necessary assistive
technology as part of their interface, and thus provide possibly the
best of both worlds. An example would be pwWebSpeak, from The
Productivity Works (refer to [Prodworks]).
[Ed. Have The Productivity Works provide short description.]
Loading assistive technologies for indirect access to User
Agent DOMs
Access to application specific data across process boundaries or
address space might be costly in terms of performance. However, there
are other reasons to consider when accessing the User Agent DOM that
might lead a developer to wish to access the DOM from their own
process or memory address space. One obvious protection this method
provides, is that if the User Agent application fails, it doesn't
disable the user's AT as well. Another consideration would be legacy
systems, where the user relies on their AT for access to other
applications as well as the User Agent, and thus would have their AT
loaded all the time, not just for accessing the User Agent.
There are several ways to gain access to the User Agent's DOM.
Most User Agents support some kind of external interface, or act as a
mini-server to other applications running on the desktop. Internet
Explorer is a good example of this, as IE can behave as a component
object model (COM) server to other applications. Mozilla, the open
source release of Navigator also supports cross platform COM (XPCOM).
An example of using COM to access the IE Object Model can be seen
in the code snippet below. This is an example of how to use COM to
get a pointer to the WebBrowser2 module, which in turn allows you to
get a interface/pointer to the document object, or IE DOM for the web
page in view.
/* first, get a pointer to the WebBrowser2 control */
if (m_pIE == NULL) {
hr = CoCreateInstance(CLSID_InternetExplorer,
NULL, CLSCTX_LOCAL_SERVER, IID_IWebBrowser2,
(void**)&m_pIE);
/* next, get a interface/pointer to the document in view,
this is an interface to the document object model (DOM)*/
void CHelpdbDlg::Digest_Document() {
HRESULT hr;
if (m_pIE != NULL) {
IDispatch* pDisp;
hr = m_pIE->QueryInterface(IID_IDispatch, (void**) &pDisp);
if (SUCCEEDED(hr)) {
IDispatch* lDisp;
hr = m_pIE->get_Document(&lDisp);
if (SUCCEEDED(hr)) {
IHTMLDocument2* pHTMLDocument2;
hr = lDisp->QueryInterface(IID_IHTMLDocument2,
(void**) &pHTMLDocument2);
if (SUCCEEDED(hr)) {
/* with this interface/pointer, IHTMLDocument2*,
you can then work on the document */
IHTMLElementCollection* pColl;
hr = pHTMLDocument2->get_all(&pColl);
if (SUCCEEDED(hr)) {
LONG c_elem;
hr = pColl->get_length(&c_elem);
if (SUCCEEDED(hr)) {
FindElements(c_elem, pColl);
}
pColl->Release();
}
pHTMLDocument2->Release();
}
lDisp->Release();
}
pDisp->Release();
}
}
}
}
For more information on using COM with IE, please visit the
Microsoft web site:
http://www.microsoft.com/com/default.asp
For more information on using XPCOM with Mozilla, please visit the
Mozilla web site:
http://www.mozilla.org/
For a working example of the method described in 6.1.4, please
visit the following web site and review HelpDB, developed as a testing
tool for web table navigation.
http://trace.wisc.edu/world/web/document_access/
This index lists each checkpoint and the sections in this document
where it is discussed. Furthermore, each guideline number links to its
definition in the guidelines document. Each checkpoint
also links to its definition in the guidelines document.
- 1.1 Ensure that all functionalities offered through the user interface may be operated through standard input device APIs supported by the operating system. [Priority 1]
(Checkpoint 1.1 in guidelines)
- Refer to 3.2 Device independence
- 1.2 Ensure that the user can interact with all active elements of a document in a device independent manner. [Priority 1]
(Checkpoint 1.2 in guidelines)
- Refer to 3.2 Device independence
- 1.3 Ensure that the user can install the user agent software in a device independent manner. [Priority 1]
(Checkpoint 1.3 in guidelines)
- Refer to 3.2 Device independence
- 1.4 Ensure that the user can configure the user agent in a device independent manner. [Priority 1]
(Checkpoint 1.4 in guidelines)
- Refer to 3.2 Device independence
- 1.5 Ensure that the user can access user agent documentation in a device independent manner. [Priority 1]
(Checkpoint 1.5 in guidelines)
- Refer to 3.2 Device independence
- 1.6 Ensure that all messages to the user (e.g., warnings, errors, etc.) are available through standard output device APIs supported by the operating system. [Priority 1]
(Checkpoint 1.6 in guidelines)
- Refer to 3.2 Device independence
- 2.1 By default and without additional customization, ensure that all functionalities offered by the user agent are accessible using the keyboard. [Priority 1]
(Checkpoint 2.1 in guidelines)
- Refer to 3.7 Keyboard access
- 2.2 Provide documentation on default keyboard commands and include with user agent documentation and/or user help system. [Priority 1]
(Checkpoint 2.2 in guidelines)
- Refer to 3.7.2 Keyboard shortcuts
- 2.3 Provide information to the user about the current keyboard configuration. [Priority 1]
(Checkpoint 2.3 in guidelines)
- Refer to 3.7.2 Keyboard shortcuts
- 2.4 Allow the user to configure the keystrokes used to activate user agent functionalities. Wherever possible, allow single key activation of functions. [Priority 2]
(Checkpoint 2.4 in guidelines)
- Refer to 3.8.2 Keyboard configuration
- 2.5 Allow the user to turn on and off author-specified keyboard configurations. [Priority 2]
(Checkpoint 2.5 in guidelines)
- Refer to 3.8.2 Keyboard configuration
- 2.6 Use platform conventions to indicate which keys activate which user agent functionalities. [Priority 2]
(Checkpoint 2.6 in guidelines)
- Refer to 3.7.2 Keyboard shortcuts
- 2.7 Avoid default keyboard configurations that interfere with system conventions. [Priority 2]
(Checkpoint 2.7 in guidelines)
- Refer to 3.8.2 Keyboard configuration
- 2.8 Provide a default keyboard configuration for frequently performed operations. [Priority 3]
(Checkpoint 2.8 in guidelines)
- Refer to 3.8.2 Keyboard configuration
- 3.1 Ensure that all product documentation conforms to the Web Content Accessibility Guidelines. [Priority 1]
(Checkpoint 3.1 in guidelines)
- Refer to 3.9.2 Accessible documentation
- 3.2 Ensure that all user agent functionalities that promote accessibility are documented. [Priority 1]
(Checkpoint 3.2 in guidelines)
- Refer to 3.9 Documentation
- 3.3 Describe product features known to promote accessibility in a section of the product documentation. [Priority 2]
(Checkpoint 3.3 in guidelines)
- Refer to 3.9.1 Where to document accessibility
- 4.1 Allow the user to configure the user agent in named profiles that may be shared (by other users or software). [Priority 2]
(Checkpoint 4.1 in guidelines)
- Refer to 3.8.1 User profiles
- 4.2 Allow the user to configure the graphical arrangement of user interface controls. [Priority 3]
(Checkpoint 4.2 in guidelines)
- Refer to 3.8.3 User interface
- 5.1 Allow the user to turn on and off rendering of images. [Priority 1]
(Checkpoint 5.1 in guidelines)
- Refer to 3.3.1 Feature control
- 5.2 Allow the user to turn on and off rendering of background images. [Priority 1]
(Checkpoint 5.2 in guidelines)
- Refer to 3.3 User control of style
- 5.3 Allow the user to turn on and off rendering of video. [Priority 1]
(Checkpoint 5.3 in guidelines)
- Refer to 3.3.1 Feature control
- 5.4 Allow the user to turn on and off rendering of sound. [Priority 1]
(Checkpoint 5.4 in guidelines)
- Refer to 3.3.1 Feature control
- 5.5 Allow the user to turn on and off rendering of captions. [Priority 1]
(Checkpoint 5.5 in guidelines)
- Refer to 3.3.1 Feature control
- 5.6 Allow the user to turn on and off animated or blinking text. [Priority 1]
(Checkpoint 5.6 in guidelines)
- Refer to 5.1.1 Sources of blinking text and animation
- 5.7 Allow the user to turn on and off animations and blinking images. [Priority 1]
(Checkpoint 5.7 in guidelines)
- Refer to 5.1.1 Sources of blinking text and animation
- 5.8 Allow the user to turn on and off support for scripts and applets. [Priority 1]
(Checkpoint 5.8 in guidelines)
- Refer to 5.5 Scripts
- 5.9 Allow the user to turn on and off support for user style sheets. [Priority 1]
(Checkpoint 5.9 in guidelines)
- Refer to 3.3.1 Feature control
- 5.10 Allow the user to turn on and off support for author style sheets. [Priority 1]
(Checkpoint 5.10 in guidelines)
- Refer to 3.3.1 Feature control
- 5.11 Allow the user to turn on and off support for spawned windows. [Priority 1]
(Checkpoint 5.11 in guidelines)
- Refer to 5.1.5 Frame equivalents
- 5.12 Allow the user to turn on and off rendering of frames. [Priority 2]
(Checkpoint 5.12 in guidelines)
- Refer to 5.1.5 Frame equivalents and
- 5.4 Frames
- 5.13 Allow the user to turn on and off author-specified page forwards that occur after a time delay and without user intervention. [Priority 3]
(Checkpoint 5.13 in guidelines)
- Refer to 3.3.1 Feature control
- 5.14 Allow the user to turn on and off automatic page refresh. [Priority 3]
(Checkpoint 5.14 in guidelines)
- Refer to 3.3.1 Feature control
- 6.1 Allow the user to control font family. [Priority 1]
(Checkpoint 6.1 in guidelines)
- Refer to 3.3 User control of style
- 6.2 Allow the user to control font size. [Priority 1]
(Checkpoint 6.2 in guidelines)
- Refer to 3.3 User control of style
- 6.3 Allow the user to control foreground color. [Priority 1]
(Checkpoint 6.3 in guidelines)
- Refer to 3.3 User control of style
- 6.4 Allow the user to control background color. [Priority 1]
(Checkpoint 6.4 in guidelines)
- Refer to 3.3 User control of style
- 6.5 Allow the user to control selection highlighting (e.g., foreground and background color). [Priority 1]
(Checkpoint 6.5 in guidelines)
- Refer to 3.3 User control of style
- 6.6 Allow the user to control focus highlighting (e.g., foreground and background color). [Priority 1]
(Checkpoint 6.6 in guidelines)
- Refer to 3.3 User control of style
- 6.7 Allow the user to control animation rate. [Priority 2]
(Checkpoint 6.7 in guidelines)
- Refer to 3.3 User control of style
- 6.8 Allow the user to control video frame rates. [Priority 1]
(Checkpoint 6.8 in guidelines)
- Refer to 3.3 User control of style
- 6.9 Allow the user to control the position of captions. [Priority 1]
(Checkpoint 6.9 in guidelines)
- Refer to 3.3 User control of style and
- 5.1.3 Textual equivalents for audio and video
- 6.10 Allow the user to start, stop, pause, and rewind video. [Priority 2]
(Checkpoint 6.10 in guidelines)
- Refer to 3.3 User control of style
- 6.11 Allow the user to control audio playback rate. [Priority 1]
(Checkpoint 6.11 in guidelines)
- Refer to 3.3 User control of style
- 6.12 Allow the user to control audio volume. [Priority 2]
(Checkpoint 6.12 in guidelines)
- Refer to 3.3 User control of style
- 6.13 Allow the user to start, stop, pause, and rewind audio. [Priority 2]
(Checkpoint 6.13 in guidelines)
- Refer to 3.3 User control of style
- 6.14 Allow the user to control speech playback rate. [Priority 1]
(Checkpoint 6.14 in guidelines)
- Refer to 3.3 User control of style
- 6.15 Allow the user to control speech volume, pitch, gender and other articulation characteristics. [Priority 2]
(Checkpoint 6.15 in guidelines)
- Refer to 3.3 User control of style
- 6.16 When new windows or user interface components are spawned, allow the user to control window size and position. [Priority 2]
(Checkpoint 6.16 in guidelines)
- Refer to 3.3 User control of style and
- 5.4 Frames
- 7.1 Ensure that the user has access to document content, including alternative representations of content. [Priority 1]
(Checkpoint 7.1 in guidelines)
- Refer to 3.1 Access to content and
- 5.1 Equivalent information
- 7.2 For dependent user agents. Ensure that the user has access to the content of an element selected by the user. [Priority 1]
(Checkpoint 7.2 in guidelines)
- Refer to 3.1 Access to content
- 7.3 For dependent user agents. Render content according to natural language identification. For unsupported natural languages, notify the user of language changes when configured to do so. [Priority 1]
(Checkpoint 7.3 in guidelines)
- Refer to 3.1.1 Changes in content language
- 7.4 When no alternative text representation has been specified, indicate what type of object is present. [Priority 2]
(Checkpoint 7.4 in guidelines)
- Refer to 5.1.2 Alternative representations of information for images, video, applets
- 7.5 pWhen alternative text has been specified explicitly as empty (i.e., an empty string), render nothing. [Priority 3]
(Checkpoint 7.5 in guidelines)
- Refer to 5.1.2 Alternative representations of information for images, video, applets
- 7.6 If a technology allows for more than one caption or description track (e.g., caption, auditory description, video of sign language, etc.), allow the user to choose from among the tracks. [Priority 1]
(Checkpoint 7.6 in guidelines)
- Refer to 3.3 User control of style and
- 3.3 User control of style
- 7.7 Allow the user to specify that description tracks (e.g., caption, auditory description, video of sign language, etc.) be rendered at the same time as audio and video tracks. [Priority 1]
(Checkpoint 7.7 in guidelines)
- Refer to 5.1.3 Textual equivalents for audio and video and
- 5.1.4 Auditory equivalents for video
- 7.8 If a technology allows for more than one audio track, allow the user to choose from among tracks. [Priority 1]
(Checkpoint 7.8 in guidelines)
- Refer to 3.3 User control of style
- 7.9 Provide a mechanism (e.g., through style sheets) to distinguish visited links from unvisited links. [Priority 3]
(Checkpoint 7.9 in guidelines)
- Refer to 5.2 Links
- 7.10 Allow the user to specify (e.g., through style sheets) that images used in links must have borders. [Priority 3]
(Checkpoint 7.10 in guidelines)
- Refer to 5.2 Links
- 8.1 Allow the user to navigate views (notably those with frame viewports). [Priority 1]
(Checkpoint 8.1 in guidelines)
- Refer to 3.5.5 View navigation
- 8.2 Keep track of the user's point of regard in each view and restore it when the user returns to the view. [Priority 1]
(Checkpoint 8.2 in guidelines)
- Refer to 3.4.2 Tracking selection and focus
- 8.3 For dependent user agents. Allow the user to navigate among table cells of a table (notably left and right within a row and up and down within a column). [Priority 1]
(Checkpoint 8.3 in guidelines)
- Refer to 3.5.3 Table navigation
- 8.4 Allow the user to navigate among all active elements in the document. [Priority 2]
(Checkpoint 8.4 in guidelines)
- Refer to 3.5.1 Navigation of active elements
- 8.5 Allow the user to search for rendered text content, including alternative text content. [Priority 2]
(Checkpoint 8.5 in guidelines)
- Refer to 3.5.4 Searching
- 8.6 Allow the user to navigate the document structure. [Priority 2]
(Checkpoint 8.6 in guidelines)
- Refer to 3.5.2 Navigation of document structure
- 8.7 Allow the user to configure structured navigation. [Priority 3]
(Checkpoint 8.7 in guidelines)
- Refer to 3.5 Navigation and searching
- 9.1 Provide a mechanism for highlighting and identifying (through a standard interface where available) the current view, selection, and focus. [Priority 1]
(Checkpoint 9.1 in guidelines)
- Refer to 3.4.1 Highlighting selection and focus and
- 3.6.6 Frames
- 9.2 For dependent user agents. Provide the user with information about the number of viewports. [Priority 2]
(Checkpoint 9.2 in guidelines)
- Refer to 5.4 Frames
- 9.3 For dependent user agents. Allow the user to view a document outline constructed from its structural elements (e.g., from header and list elements). [Priority 2]
(Checkpoint 9.3 in guidelines)
- Refer to 3.5.5 View navigation
- 9.4 Make available information about an element's context within a document (e.g., numerical or relative position). [Priority 2]
(Checkpoint 9.4 in guidelines)
- Refer to 3.6.2 Element context
- 9.5 Make available whether following a link will involve a fee. [Priority 2]
(Checkpoint 9.5 in guidelines)
- Refer to 3.6.3 Links
- 9.6 Make available information about a link that will enable the user to decide whether to follow the link. [Priority 3]
(Checkpoint 9.6 in guidelines)
- Refer to 3.6.3 Links
- 9.7 For dependent user agents. Provide access to header information for a selected table cell. [Priority 1]
(Checkpoint 9.7 in guidelines)
- Refer to 3.6.4 Tables
- 9.8 Make available the dimensions of a selected table. [Priority 3]
(Checkpoint 9.8 in guidelines)
- Refer to 3.6.4 Tables
- 9.9 Provide the user with access to any label explicitly associated with a form control. [Priority 2]
(Checkpoint 9.9 in guidelines)
- Refer to 3.6.5 Form controls
- 9.10 Maintain consistent user agent behavior and default configurations between software releases. Consistency is less important than accessibility and adoption of system conventions. [Priority 3]
(Checkpoint 9.10 in guidelines)
- Refer to 3.7.3 Software consistency
- 10.1 Provide information about document and view changes (to the user and through programming interfaces). [Priority 1]
(Checkpoint 10.1 in guidelines)
- Refer to 3.6.7 Scripts
- 10.2 Ensure that when the selection or focus changes, it is in the viewport after the change. [Priority 2]
(Checkpoint 10.2 in guidelines)
- Refer to 3.4.2 Tracking selection and focus
- 10.3 Allow the user to configure the user agent for notification of certain types of document changes only. [Priority 3]
(Checkpoint 10.3 in guidelines)
- Refer to 3.6.7 Scripts
- 10.4 When loading a document, make available what portion of the document has loaded, whether loading has stalled, and when the user may begin to browse. [Priority 3]
(Checkpoint 10.4 in guidelines)
- Refer to 3.6.1 Document and view status information
- 10.5 Make available what portion of the document the user has viewed. [Priority 3]
(Checkpoint 10.5 in guidelines)
- Refer to
- 10.6 Allow the user to request to be prompted before a form is submitted. [Priority 3]
(Checkpoint 10.6 in guidelines)
- Refer to 3.6.5 Form controls
- 11.1 Implement the accessibility features defined for supported technologies. [Priority 1]
(Checkpoint 11.1 in guidelines)
- Refer to 5 Support for HTML accessibility and
- 6 Support for CSS accessibility and
- 7 Support for SMIL accessibility
- 11.2 Support appropriate W3C Recommendations. [Priority 2]
(Checkpoint 11.2 in guidelines)
- Refer to 5 Support for HTML accessibility and
- 6 Support for CSS accessibility and
- 7 Support for SMIL accessibility
- 12.1 Use and provide accessible interfaces to other technologies. [Priority 1]
(Checkpoint 12.1 in guidelines)
- Refer to 4.3 Accessibility interfaces
- 12.2 Provide programmatic read and write access to user agent functionalities and user interface controls (including selection and focus) by using operating system and development language accessibility resources and conventions. [Priority 1]
(Checkpoint 12.2 in guidelines)
- Refer to 4.3 Accessibility interfaces
- 12.3 Notify dependent user agents of changes to the document and user interface controls (including selection and focus) by using operating system and development language accessibility resources and conventions. [Priority 1]
(Checkpoint 12.3 in guidelines)
- Refer to 4.3 Accessibility interfaces
- 12.4 For graphical desktop browsers. Comply with W3C Document Object Model specifications and export interfaces defined by those specifications. [Priority 1]
(Checkpoint 12.4 in guidelines)
- Refer to 4.4 The document object model
- 12.5 For graphical desktop browsers. Provide programmatic exchange of information in a timely manner. [Priority 2]
(Checkpoint 12.5 in guidelines)
- Refer to 4.3 Accessibility interfaces
- 12.6 Follow operating system conventions and accessibility settings. In particular, follow conventions for user interface design, default keyboard configuration, product installation, and documentation. [Priority 2]
(Checkpoint 12.6 in guidelines)
- Refer to 4.1 System conventions
Many thanks to the following people who have contributed
through review and comment: Paul Adelson, James Allan, Denis
Anson, Kitch Barnicle, Harvey Bingham, Olivier Borius, Judy
Brewer, Bryan Campbell, Kevin Carey, Wendy Chisholm, David Clark,
Chetz Colwell, Wilson Craig, Nir Dagan, Daniel Dardailler,
B. K. Delong, Neal Ewers, Geoff Freed, John Gardner, Al Gilman,
Larry Goldberg, John Grotting, Markku Hakkinen, Earle Harrison,
Chris Hasser, Kathy Hewitt, Philipp Hoschka, Masayasu Ishikawa,
Phill Jenkins, Jan Kärrman (for help with html2ps),
Leonard Kasday, George Kerscher, Marja-Riitta
Koivunen, Josh Krieger, Catherine Laws, Greg Lowney, Scott
Luebking, William Loughborough, Napoleon Maou, Charles
McCathieNevile, Masafumi Nakane, Mark Novak, Charles Oppermann,
Mike Paciello, David Pawson, Michael Pederson, Helen Petrie, David
Poehlman, Michael Pieper, Jan Richards, Hans Riesebos, Joe Roeder,
Lakespur L. Roca, Gregory Rosmaita, Lloyd Rutledge, Liam Quinn,
T.V. Raman, Robert Savellis, Rich Schwerdtfeger, Constantine
Stephanidis, Jim Thatcher, Jutta Treviranus, Claus Thogersen,
Steve Tyler, Gregg Vanderheiden, Jaap van Lelieveld, Jon S. von
Tetzchner, Willie Walker, Ben Weiss, Evan Wies, Chris Wilson, Henk
Wittingen, and Tom Wlodkowski,
- [CSS1]
- "CSS, level 1 Recommendation", B. Bos, H. Wium Lie, eds. The
CSS1 Recommendation is:
http://www.w3.org/TR/1999/REC-CSS1-19990111.
- [CSS2]
- "CSS, level 2 Recommendation", B. Bos, H. Wium Lie, C. Lilley,
and I. Jacobs, eds. The CSS2 Recommendation is:
http://www.w3.org/TR/1998/REC-CSS2-19980512.
- [CSS-ACCESS]
- "Accessibility Features of CSS", I. Jacobs, J. Brewer,
eds. The latest version of this W3C Note is available at:
http://www.w3.org/TR/CSS-access.
- [DOM1]
- "Document Object Model (DOM) Level 1 Specification",
V. Apparao, S. Byrne, M. Champion, S. Isaacs, I. Jacobs, A. Le Hors, G. Nicol,
J. Robie, R. Sutor, C. Wilson, and L. Wood, eds. The DOM Level 1
Recommendation is:
http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001.
- [HTML40]
- "HTML 4.0 Recommendation", D. Raggett, A. Le Hors, and I.
Jacobs, eds. The HTML 4.0 Recommendation is:
http://www.w3.org/TR/1998/REC-html40-19980424.
- [HTML32]
- "HTML 3.2 Recommendation", D. Raggett, ed. The HTML 3.2
Recommendation is:
http://www.w3.org/TR/REC-html32.
- [MATHML]
- "Mathematical Markup Language", P. Ion and R. Miner, eds. The MathML 1.0
Recommendation is:
http://www.w3.org/TR/1998/REC-MathML-19980407.
- [RFC2119]
- "Key words for use in RFCs to Indicate Requirement Levels",
S. Bradner, March 1997.
Available at
http://www.ietf.org/rfc/rfc2119.txt
- [SMIL]
- "Synchronized Multimedia Integration Language (SMIL) 1.0
Specification", P. Hoschka, editor. The SMIL 1.0 Recommendation is:
http://www.w3.org/TR/1998/REC-smil-19980615
- [UA-TECHNIQUES]
- "Techniques for User Agent Accessibility Guidelines 1.0", J. Gunderson, I. Jacobs, eds.
This document explains how to implement the checkpoints defined
in "User Agent Accessibility Guidelines 1.0". The latest draft of the techniques is
available at:
http://www.w3.org/WAI/UA/WAI-USERAGENT-TECHS/
- [WAI-AUTOOLS]
- "Authoring Tool Accessibility Guidelines", J. Treviranus,
J. Richards, I. Jacobs, C. McCathieNevile, eds.
The latest Working Draft of these guidelines for designing
accessible authoring tools is available at:
http://www.w3.org/TR/WD-WAI-AUTOOLS/
- [WAI-WEBCONTENT]
- "Web Content Accessibility Guidelines", W. Chisholm,
G. Vanderheiden, and I. Jacobs, eds., 5 May 1999.
This W3C Recommendation is
http://www.w3.org/TR/1999/WAI-WEBCONTENT-19990505.
- [XML]
- "Extensible Markup Language (XML) 1.0.", T. Bray, J. Paoli, C.M.
Sperberg-McQueen, eds. The XML 1.0 Recommendation is:
http://www.w3.org/TR/1998/REC-xml-19980210
Note. W3C cannot maintain stability
for any of the following references outside of its control.
These references are included for convenience.
- [APPLE-HI]
- Information on
accessibility guidelines for
Macintosh applications.
Information on Apple's scripting model can be found at
tn1095
and
tn1164.
Refer also to the Inside Macintosh chapter devoted
to
Interapplication Communication.
- [ED-DEPT]
-
"Requirements
for Accessible Software Design", US Department of Education,
version 1.1 March 6, 1997.
- [EITAAC]
- "EITAAC Desktop Software standards", Electronic Information Technology Access
Advisory (EITAAC) Committee.
- [IBM-ACCESS]
-
"Software Accessibility" IBM Special Needs Systems.
- [ICCCM]
-
"The Inter-Client communication conventions manual". A protocol for
communication between clients in the X Window system.
- [ICE-RAP]
-
"An ICE Rendezvous Mechanism for X Window System Clients", W. Walker. A
description of how to use the ICE and RAP protocols for X Window clients.
- [JAVA-ACCESS]
-
"IBM Guidelines for Writing Accessible Applications Using 100% Pure Java", R.
Schwerdtfeger, IBM Special Needs Systems. Available at:
http://www.austin.ibm.com/sns/snsjavag.htm
- [JAVAAPI]
-
Information on Java Accessibility API can be found at
Java Accessibility Utilities.
- [JAVA-CHECKLIST]
-
"Java Accessibility Guidelines and Checklist". IBM Special Needs Systems.
- [JAVA-TUT]
- "The Java Tutorial. Trail: Creating a GUI with JFC/Swing". An online tutorial
that describes how to use the Swing Java Foundation Class to build an
accessible User Interface.
- [MSAA]
- Information on active accessibility can be found at the
Microsoft WWW
site on Active Accessibility.
- [MS-ENABLE]
- Information on
accessibility guidelines for
Windows applications.
- [MS-KEYBOARD]
- Information on
keyboard assistance for Internet Explorer and MS Windows.
- [MS-SOFTWARE]
-
"The Microsoft Windows Guidelines for Accessible Software Design".
Note.
This is a "self-extracting archive", an application that will probably only
run on MS-Windows systems.
- [NOTES-ACCESS]
-
"Lotus Notes Accessibility Guidelines" IBM Special Needs Systems.
- [Prodworks]
- The Productivity Works.
- [SUN-DESIGN]
-
"Designing for Accessibility", Eric Bergman and Earl Johnson. This paper
discusses specific disabilities including those related to hearing, vision,
and cognitive function.
- [SUN-HCI]
-
"Towards Accessible Human-Computer Interaction", Eric Bergman, Earl Johnson,
Sun Microsytems 1995. A substantial paper, with a valuable print bibliography.
- [TRACE-REF]
-
"Application Software Design Guidelines" compiled by G. Vanderheiden. A
thorough reference work.
- [WHAT-IS]
-
"What is Accessible Software", James W. Thatcher, Ph.D., IBM, 1997. This paper
gives a short example-based introduction to the difference between software
that is accessible, and software that can be used by some assistive
technologies.
- [XGuidelines]
- Information on
accessibility guidelines for
Unix and X Window applications.
The Open Group has various
guides that explain the Motif and Common Desktop
Environment (CDE) with topics like how users interact with Motif/CDE
applications and how to customize these environments.
Note. In X, the terms client and server
are used differently
from their use when discussing the Web.