Let’s say you have created a product that is fully keyboard navigatable. Then you start JAWS and for some reason keyboard navigation is no longer working? Why is this you may ask? It is because JAWS disables all the DOM keyboard events. Don’t visually impared people need to use the keyboard? Maybe they prefer the mouse which they have a hard time to see?
To get the keyboard events to work at all you need to get JAWS into forms mode. However this cannot be done programmatically and it requires user interaction. This can be achieved in a fairly easy way but it decreases the usability when we are really striving to improve the user experience for visually impared users.
The next issue is to get JAWS to read out information about the UI to the user. This is very tricky. How do you get JAWS to understand that the currently focused DIV is a slider? HTML does not have sliders and HTML is the only thing JAWS understands. And please don’t say use a text input. That is not acceptable. The UI must be the same and the screen reader should read out information that will help the visually impared person to understand what to do.
There are currently three ways to go here:
- Shut out visually impared people. (Is this what Derek Featherstone is suggesting?)
- Create a less usable application that only uses text inputs, links and other non intuitive controls and continually go back to the server ala ASP.NET and make the user frustrated of the bad responsiveness of the application. Visually impared people don’t need less UI feedback. They need better UI feedback.
- Use complicated hacks and odd behaviors to get the major screen readers to treat your web application just like any other Microsoft Active Accessibility application (Win32 app).
All is not lost here. Aaron Leventhal is doing a great job implementing the WAI roles in Mozilla. This means that you can set the wai:role attribute on your DIV, representing a slider, to “slider” (I’m not really sure that there is such a role.) and the screen reader will then only need to support MSAA (and they all do but some think they can do better for HTML which they clearly can’t). All you have to do is to make sure you set the role correctly and implement keyboard navigation (and get screen readers to not suck ass :evil:)