2) If so, how do blind folks know, for example in a menu widget, that
RIGHT will expand a menu item? Or DOWN will go to the next menu item
on a vertical menu as opposed to a horizontal menu? My workmate
suggests that I should ignore this advice and allow Tabbing inside a
widget as well. If it is some ARIA attribute that informs a
screenreader user what to expect when pressing a key, the fact is that
ARIA is not prime-time yet. IE, for example, doesn't support much of
ARIA with many screen readers.
3) Is ARIA mature enough and implemented well enough in various
browsers/ATs that I can use activedescendent instead of roving
tabindex? I assume not...that I must use the roving tabindex
technique. Thanks for guidance in advance...
Blind users know right arrow key on aria-haspopup, in a menu item,
brings up a popup as this is how it has worked on Windows for over a
decade.
You raise some very interesting and valid points, which I'll try to
address from my point of view below:
On 8/07/2009 8:42 AM, mj wrote:
> The designers of Web browsers made the same choice, but the controls
> where arrow keys meant something (text input, select item, etc.) were
> fewer. Links on web pages are treated as controls.
True. However, when you change the visual appearance of a link, you are
changing the user interface. More below.
> Desktops have menus, and nested menus, so "internal" focus control
> (arrow keys) means something there. But web pages don't have controls
> for menus per se--a nested menu is probably a nested lists of links
> (as a CSS selector: ul li a). In a web page, a menu isn't a menu, it's
> a nested list of links
This is true, and when it is simply a nested list of links with no
JavaScript, it's probably best to leave it as is. However, when you use
JavaScript to make this nested list of links behave more like a
desktop-style drop down menu with sub-menus, you have made a significant
alteration to the user interface. You're now clearing trying to
replicate a desktop-style menu structure. In this case, the tab key no
longer makes sense, because its next target depends highly on which
menus are visible at the time.
> Web browser users, sighted or otherwise, are accustomed to TAB meaning
> "go to the next link or control". In the case of a menu, that means
> the next link of the menu. But your advice is to use arrow keys for
> that, instead of TAB, because that's what desktops do. Even though TAB
> has meant "go to the next link" for a decade and a half in web
> browsers.
In recent years, we're seeing a trend towards rich web applications
which use JavaScript and CSS to create new widgets. I'm totally blind
myself, but as I understand it, these widgets are starting to look more
and more like widgets in desktop applications. Indeed, web applications
themselves are starting to look like (and in some cases, even replace)
desktop applications. I think that keyboard access in these web
applications needs to change accordingly.
>The advice that DHTML components should hijack not just visual
> behavior, but also tab order, seems invasive to me.
On the contrary, I'd argue that a change in visual behaviour means a
change to the core user interface, and keyboard access should follow.
That is, if you're going to make a web app appear more like a desktop
app, then the keyboard access should also behave more like a desktop app.
> The consensus
> seems to be to use JavaScript to redesign, by fiat, how the browser
> interprets the TAB key, to make it act like a desktop. That new
> behavior violates the expectations of users who are accustomed to how
> browsers handle tabs.
It could be argued that changing the visual appearance similarly
violates user expectations of browser appearance, but this has become an
accepted trend, at least for sighted users...
> And that includes screen reader users who are
> accustomed to web pages working like web pages, not like desktops.
> I imagine that "TAB+ARROW" focus control *is* easier for screen reader
> users. Assuming they can figure out that *this* web page works like a
> desktop, instead of working like a web page.
Ah! And here's where ARIA enters the picture. You've basically
identified one of the core challenges that ARIA was created to solve:
now that we have web applications that are acting more like desktop
applications, how do we make these accessible?
In over-simplified terms, ARIA allows web authors, using simple
markup/DOM attributes, to specify semantic information about a control
which can be communicated to assistive technologies such as screen
readers. So you have a widget which appears and behaves like a menu? Set
role="menu" on it, and set role="menuitem" on its items. If I'm using a
supporting screen reader and browser, when that menu gets focus, I'll
now hear about it as if it was a menu in a desktop application, not a
link in a nested list.
> And it also may confuse or annoy other keyboard
> navigators, including people with limited motion control, and geeks
> who despise the mouse because it loses keyboard home position. How are
> any of these users supposed to know to start using arrow keys for
> "internal" focus control, when that simply isn't how web pages have
> ever worked?
As above, I'd argue that once you change the visual design, users can
expect a similar change in keyboard access. Sure, this isn't true right
now for many web applications, but I think it's a fair expectation.
Hope this helps, and apologies for any inaccuracy or misleading
over-simplification. :)
Jamie
--
James Teh
Email/MSN Messenger/Jabber: ja...@jantrid.net
Web site: http://www.jantrid.net/
This is the single greatest reason I give for using some of the better JS
libraries out there (Dojo, YUI, jquery) as much of the ARIA goodness is
being baked into the codebases there. Not all libraries are fully there,
but they continue to evolve and grow: the basics are already covered
across the libraries (AFAIK) and the fringier functions are coming online
at various paces. As I am writing this off line I cannot provide a
resource to you, but search for Todd Kloots video (from Yahoo!) about
accessible web 2.0 widgets and architecture - I believe it can be found at
Yahoo!'s developer site - for some idea of what is happening. Becky
Gibson of IBM is also doing some great work with Dojo... (for 2
implementations I am aware of).
> Out of curiosity, why don't browsers automatically implement this
> functionality based on the roles assigned to elements?
Hopefully once ARIA becomes an official part of HTML5 (likely, but not a
given), we may start to see this happen. Author demand would help
strengthen the needs requirement.
JF
>> Out of curiosity, why don't browsers automatically implement this
>> functionality based on the roles assigned to elements?
>
> Hopefully once ARIA becomes an official part of HTML5 (likely, but
> not a
> given), we may start to see this happen. Author demand would help
> strengthen the needs requirement.
Actually, I disagree. That's what using the HTML 5 widgets will do.
If you use the out of the box widgets you'll get key nav, mouse nav,
look and feel, semantics, etc.
ARIA doesn't try to be HTML. If the role and ARIA attributes started
driving behavior instead of acting just as an informer to ATs, then it
would break everything that uses ARIA right now. For a given browser
it would be unpredictable. The strength of ARIA is that it makes it
possible to do your own thing and make it accessible. You don't have
to retest your site for mainstream usage if you add ARIA, because it
doesn't affect that. Mainstream usage will remain stable with or
without ARIA markup, and whether or not a given browser supports ARIA.
It's invisible to everything but ATs. That's a good thing.
Of course not everyone will add ARIA, but it is at least possible.
That means people can still innovate and be accessible while we wait
for the next great thing.
- Aaron
The next great thing should be to be able to use standard widgets that
provide accessibility like ARIA does, without needing to know anything about
accessibility or how it is helpful for the disabled.
Most web developers won't be interested in offering accessibility but the
pages they make should be accessible.
Otherwise... a few big companies and the disabled web developers themselves
will probably make accessible sites, but the others won't do it.
Octavian
> So, if I have a menu widget that
> allows arrow keys for navigating the menu, how do I use those keys to
> navigate when using the screenreader?
Aside from manually switching to focus/forms mode, recent versions of
NVDA and JAWS should automatically switch modes (so that you can use
these keys for their normal purpose) when an interactive widget (such as
a form field or menu) gains focus. In the case of a menu, this obviously
requires correct ARIA markup. If this does not happen, it's probably a bug.
Regrettably, I think the convention that UAs shouldn't use ARIA works to
prevent that.
ARIA certainly makes it possible to make arbitrary markup accessible to
users of AT (or automation frameworks) that interact and represent via
the system accessibility API.
But in so far as it restricts user agents to simply exposing ARIA
information to assistive technology, it risking leaving out users who
either aren't using AT, aren't using AT that queries the system API, or
are using complex combinations of AT and user agent UIs.
ARIA can certainly help towards partially repairing things when authors
have made the mistake of treating HTML as HyperText Made Up Language
(like with the Dojo project that rebuilt checkbox controls with "div"
elements). Sadly, I think the target market for reinventing controls in
this way is already moving on to direct draw technologies not covered by
ARIA, like "canvas".
ARIA can also improve the accessibility for some system-API-based AT
users of interfaces that are already pretty accessible to other user
groups (I'm thinking especially of live regions here, even though
they've lost the handy ability to prioritize messages).
But I don't this adds up to a licence to "do your own thing".
There's a danger of "accessibility" looking like shorthand for "now
works for blind users of new versions of popular screenreaders" here.
Just to take one example - consider Susan. She has early onset
Parkinson's and struggles to use a mouse but can peck away slowly at a
keyboard. She accesses an SVG-based interface that has landmark and
heading roles. Why shouldn't a keyboard-friendly user agent like Opera,
which already binds keyboard shortcuts to things like headings, links,
and form controls, bind a keyboard shortcut to the "heading", "main" and
"search" landmark roles so Susan can skip between headings, to the main
content, or to site search. How does it make sense for some logical
headings to be handled by Opera's shortcuts and other logical headings
by some hypothetical AT add-on? Or again, if there's a drag and drop
interface, why shouldn't Susan be able to use Opera-provided shortcuts
to manipulate it?
One quickly arrives at the conclusion that if ARIA can't help in these
use-cases, then the recommendation should be to mix XHTML and SVG inline
in order to use XHTML's heading elements, and forget about
role="heading" entirely.
Incidentally, it's not very clear to me whether Opera would be clearly
breaching an actual conformance requirement, as opposed to convention,
if it exposed such shortcuts or not. "WAI-ARIA processing by the user
agent MUST NOT interfere with the normal operation of the built-in
features of the host language", says the spec, but would exposing
keyboard navigation to a "text" element with a "heading" role (say)
constitute such interference?
--
Benjamin Hawkes-Lewis
> ARIA doesn't try to be HTML. If the role and ARIA attributes started
> driving behavior instead of acting just as an informer to ATs, then it
> would break everything that uses ARIA right now. For a given browser
> it would be unpredictable. The strength of ARIA is that it makes it
> possible to do your own thing and make it accessible.
Not really.
ARIA makes it possible to make arbitrary markup accessible to users of
AT (or automation frameworks) that interact and represent via the system
accessibility API.
A website that uses ARIA can therefore be more accessible than a website
that does not.
But we shouldn't confuse that with making it accessible
You don't have
> to retest your site for mainstream usage if you add ARIA, because it
> doesn't affect that. Mainstream usage will remain stable with or
> without ARIA markup, and whether or not a given browser supports ARIA.
> It's invisible to everything but ATs.
This doesn't match the goals of the spec:
* defining what information may be controlled by the author;
* supporting device independence for new devices such as telephones,
PDAs, and televisions;
* improving the accessibility of dynamic content generated by scripts;
* providing for interoperability with assistive technology.
On 8/7/09 20:40, Aaron Leventhal wrote:
> ARIA doesn't try to be HTML. If the role and ARIA attributes started
> driving behavior instead of acting just as an informer to ATs, then it
> would break everything that uses ARIA right now. For a given browser
> it would be unpredictable. The strength of ARIA is that it makes it
> possible to do your own thing and make it accessible.
Regrettably, I think the convention that UAs shouldn't use ARIA works to
prevent that.
ARIA certainly makes it possible to make arbitrary markup accessible to
users of AT (or automation frameworks) that interact and represent via
the system accessibility API.
But in so far as it restricts user agents to simply exposing ARIA
The menu widget we are developing is similar to YUI's menubar, except
it uses simple <ul> semantics in contrast to YUI's embedded divs
within <ul>s. Here it is (it is not really styled much at this point).
Here you go:
http://mini.ncbi.nih.gov/4e1
Also note that in older versions such as 0.6p2, browse mode/focus mode
was called "virtual buffer pass through" on/off. When NVDA says "virtual
buffer pass through on", this is not turning *on* the virtual buffer;
it's turning on *pass through* for the buffer, meaning that everything
passes right through it instead of being captured. This created quite a
bit of confusion and was rather technical terminology, so we renamed it
to browse/focus mode.
Jamie
--
James Teh
Email/MSN Messenger/Jabber: ja...@jantrid.net
Web site: http://www.jantrid.net/