Académique Documents
Professionnel Documents
Culture Documents
Peter Thiessen
Adaptive Technology Resource Centre
University of Toronto
130 St. George St., Toronto, Ontario
peter.thiessen@utoronto.ca
ABSTRACT
Web 2.0 enabled by the Ajax architecture has given rise to a new
level of user interactivity through web browsers. Many new and
extremely popular Web applications have been introduced such as
Google Maps, Google Docs, Flickr, and so on. Ajax Toolkits such
as Dojo allow web developers to build Web 2.0 applications
quickly and with little effort. Unfortunately, the accessibility
support in most toolkits and Ajax applications overall is lacking.
WAI-ARIA markup for live regions presents a solution to making
these applications accessible. A chat example is presented that
shows the live regions in action and demonstrates several
limitations of ARIA live regions.
General Terms
Human Factors, Design, User Agents
Keywords
Accessibility, Web 2.0, Ajax, ARIA, Live Regions, User Agents
1.
INTRODUCTION
Charles Chen
Empirical Software Engineering Lab
The University of Texas at Austin
713-557-7289
clc@clcworld.net
in arbitrary locations and user interactions with the page are far
more complex. Since these Ajax web applications behave more
like desktop applications than web pages, solutions for making
desktop applications accessible can be applied to these Ajax web
applications. One of the most important aspects of making
desktop applications accessible is to inform users of important
events that are occurring on parts of the screen, even if those parts
are not focused. For example, in a chat application, the users
focus is on the input blank, but it is essential to inform the user of
what the other chatters have typed. On the other hand, it is
important not to overwhelm the user with a flood of information,
especially if that information is trivial.
In traditional desktop applications, there are a set of known
widgets such as buttons, trees, data cells, etc. These widgets
behave in a predictable manner; thus, an AT simply needs to
know how to support the events of a type of widget in order to
provide reasonable support for any instance of that type of widget.
However, Ajax applications do not share this uniformity. Many
Ajax applications use custom widgets created out of span and div
elements, mixed with input elements and graphics, and laid out by
CSS. Sometimes, Ajax applications will even use custom widgets
for standard HTML widgets such as a button because the
application developer wished to change the behavior and/or
appearance of that widget to fit the particular application better.
As a result, while AT can pick up DOM mutation events, it is very
difficult, if not impossible, for an AT to understand what that
event represents in the context of an Ajax application.
With the advent of Web 2.0 and Ajax, web applications can now
provide a level of interactivity that can rival traditional desktop
applications. Many new and extremely popular Ajax applications
have been introduced such as Google Maps [6], Google Docs [7],
and Flickr [20]. However, Web 2.0 poses a new problem for
screen readers and other similar assistive technologies. Part of the
Web 2.0 advancement is the ability to access and modify the
DOM of a XHTML document and not have a full page refresh.
Modifying a DOM element creates a look-and-feel similar to a
desktop application and has allowed for useful features such as
drag-and-drop XHTML document elements.
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies
are not made or distributed for profit or commercial advantage and that
copies bear this notice and the full citation on the first page. To copy
otherwise, or republish, to post on servers or to redistribute to lists,
requires prior specific permission and/or a fee.
W4A2007- Technical Paper , May 0708, 2007, Banff, Canada. CoLocated with the 16th
International World Wide Web Conference.
Copyright 2007 ACM 1-59593-590-8/06/0010 ...$5.00.
Reef Chat was developed to work with the Fire Vox[5] screen
reader and for the purpose of this paper, to demonstrate how
ARIA live regions can be used to develop a highly interactive
Web 2.0 Internet application. Hence, we see our contribution as
being both a proof of concept/demo and a discussion of lessons
learned.
2.
WAI-ARIA MARKUP FOR AJAX
LIVE REGIONS
2.1
WAI-ARIA
The solution to the DOM accessibility problem is to markup the
live regions, the regions on the page which can be changed by
Ajax. Markup for live regions is part of the Web Accessibility
Initiative - Accessible Rich Internet Applications guideline (WAIARIA) [15]. Live regions are only one part of ARIA, other parts
enable desktop-style Javascript widgets, specify typing restrictions
on data, or mark regions of a page with landmarks (such as the
main content). Future versions of ARIA are expected to allow
accessible diagrams as well as author-defined roles, properties and
relations. The only part of ARIA that is currently supported by
Fire Vox is the live region markup. Window-Eyes and JAWS
support the widget-related markup, but not the live region
markup. This is the limitation of ARIA support in current AT
products.
There is ARIA-ROLE and ARIA-STATE. State is the most
important. Role is secondary when it comes to live regions, but is
useful because it includes higher level roles like "log" and
"status". Specifically:
2.2
live=POLITENESS_SETTING
live=off"
live=polite"
live=assertive"
live=rude"
2.3
Description
This is the default. Any updates made to it
should not be announced to the user.
live=off" would be a sensible setting for
things that update very frequently such as
timers that change every second.
The region is live, but updates made to it
should only be announced if the user is not
currently doing anything. live=polite"
should be used in most situations involving
live regions that present new information to
users, such as updating news headlines.
The region is live. Updates made to it are
important enough to be announced to the
user as soon as possible, but it is not
necessary to immediately interrupt the user.
live=assertive" should be used if there is
information that a user should know about
right away, for example, warning messages
in a form that does validation on the fly.
The region is live. Updates to it are
extremely important. In fact, the updates
are so important that the user must be
interrupted immediately. live=rude"
should be used sparingly and only with
great consideration as it can be very
annoying to users.
controls=[IDLIST]
controls=myRegion1
myRegion2
etcEtcEtc"
2.4
Description
controls=[IDLIST] associates an
element with one or more regions that
it controls. If it controls more than one
region, the regions are separated by a
space. When a change to one of these
regions occurs because of a user action
on the control, then the change should
be announced immediately to let users
know that their action did have an
effect.
atomic=BOOLEAN
Table 3. atomic=BOOLEAN
Setting
Description
This is the default. It means that when
there is a change in the region, that
change can be presented on its own;
the AT should not present the entire
region. atomic=false" is generally a
good idea as it presents users with
only changes and does not cause them
to hear repetitive information that has
not changed. However, web
developers should take care that the
changed information, when presented
by itself, can still be understood and
contextualized by the user.
If atomic is set to "true", it means that
the region must be presented as a
whole; when there is a change, the AT
should present the entire region, not
just the change. atomic=true" can
make it harder for users to understand
changes as the changed areas are not
presented independently.
atomic=true" can also be annoying as
it can force users to listen to repetitive
information that has not changed.
However, atomic=true" is necessary
in cases where the change, when
presented by itself, cannot be
understood and contexualized by the
user.
atomic=false"
atomic=true"
2.5
labelledby=[IDLIST]
Table 5. describedby=[IDLIST]
Setting
Description
describedby=myDesc1
myDesc2 etcEtcEtc"
describedby=[IDLIST] associates
one or more elements that serve as
descriptions with live region that
they describe. If there is more than
one description, the descriptions are
separated by a space. The
descriptions should not be presented
to the user when there is a change to
the region that they are associated
with as they are likely to be too
lengthy and would annoy the user;
however, there should be an easy
way for users to find the description
for a particular region when they
want to find out more about the
region.
2.7
relevant=[LIST_OF_CHANGES]
relevant=removals"
relevant=text"
relevant=all"
labelledby=myLabel1
myLabel2 etcEtcEtc"
2.6
Description
labelledby=[IDLIST] associates one
or more elements that serve as labels
with the live region that they label.
These elements do not have to be
HTML <label> elements. If there is
more than one label, the labels are
separated by a space. The labels
should be presented to the user when
there is a change to the region that
they are associated with.
describedby=[IDLIST]
Description
2.8
Issues
The WAI-ARIA markup for live regions does still have a few
issues to be worked out. These include difficulties with
determining causality, giving developers the ability to group
updates, handling interim updates, and providing higher-level
abstractions for web developers.
Although WAI-ARIA has a controls=[IDLIST] property to
specify that a control will change certain live regions, if these live
regions can be changed by world events, then the AT will not be
able to distinguish between a change caused by the user and one
that is not. This can be an important distinction since changes
caused by the user should be spoken immediately to let users
know that their actions did have an effect; however, if the change
was caused by world events, then the change should be
3.
2.9
4.
has the clients user name in the message. Also, a direct reply is
flagged as MAX, as are the subsequent three messages from that
user. A medium ranked message is given a medium font size
between 11-13pt. The MID flag ranking algorithm is fairly simple.
The higher the count of similar words in a message compared to
the clients messages, the higher the rank of that message. The
remainder of the messages are flagged as low priority and given
the smallest font size of 10pt and lowest weight. As a side note,
font em percentages are actually used for font sizes and the font
point sizes shown are the defaults. This allows scalable font sizes
for users with low eyesight. Also, a message chime to help notify
the user of a new message is used as an optional preference that
can be enabled. To prevent a sudden decrease in ranking simply
because a message does not contain enough similar words, the
importance decays at a gradual rate. Therefore, a message with an
80% weight will not suddenly drop to 50%; instead, it will go
down slowly as the conversation seems less and less relevant.
For DOM updates, the chat widget uses Ajax live regions to
inform the AT. Several options exist for using live regions. The
ideal solution would be to mimic the visual formatting of the chat
widget by using multiple spoken voices in parallel with varying
volumes. The ranking system of MAX, MID, and MIN would
determine the volume for each message to be spoken.
Unfortunately, technical barriers exist and the solution is not
currently feasible. The multiple voices solution is investigated
further in section five of the discussion.
The remaining options attempt to mimic the ranking system in
Table 7. One option is to markup messages individually with
ranked live settings. Another option is to group messages based
on rank, all with the same live setting. A further option is to
simply speak messages as they are received.
Max
14pt, 100%
Mid
11-13pt,
60-80%
Min
10pt, 50%
Criteria
Client name in message, or a
direct reply to client
Ranked depending on
similarity to clients past
messages
Remaining messages
The table shows how the different ranking levels are used to
markup the weight of each message. The visual formatting of each
message is done using CSS and sectioned off into three ranks:
MAX, MID, and MIN as shown in table 7. A message that is
flagged as important (max), is given the largest font size, 14pt,
and the strongest font weight. The MAX flag is used if a message
Several design decisions were made when using this markup. First
the live=rude setting was avoided altogether for message
queuing. A message marked with a rude setting would interrupt
the current spoken message and could disorientate the user.
Second, the role=role:log [16] tag tells screen readers to treat
5.
DISCUSSION
One way to describe this idea is that the accessible chat system is
auditorily simulating the visual fisheye effect. [13] This effect
works by visually highlighting a text element and bringing it to
the foreground while pushing surrounding text elements to the
background. The fisheye effect aids a user in scanning
information by bringing attention to important elements. An audio
representation of the fisheye would work similarly. In an active
chat environment, at any given time, a message marked highly
relevant would be spoken in the foreground, with a lower-ranked
message concurrently spoken in the immediate background, and
the lowest ranked message concurrently spoken in the
background. Using this system a user could scan audio
messages based on a three tier relevance ranking hierarchy. The
granularity of filtering the human ear probably does not reflect a
three tier filtering system. For this reason, the solution is not a
perfect representation of the human ears ability to filter. Future
work is needed to study how many audio conversations the
average user could follow without being overloaded with
information. Also, the ranking algorithm used in Table 7 is fairly
simple and more complex algorithms would be required to best
support information processing. Several other technical barriers
also remain as well, especially if this model is to be extended to
support the wide diversity of Ajax applications that exist beyond
chat.
6.
RELATED WORK
7.
CONCLUSION
8.
ACKNOWLEDGMENTS
9.
REFERENCES