I’ve been asked various forms of the question “how can I make JAWS move the focus for my Flash application?” recently and decided to create a quick post. The answer: sometimes you can, sometimes you can’t.
When a JAWS user reaches the page containing a Flash (or Flex) application the screen reader is in what JAWS calls Virtual PC Cursor mode (Window-Eyes calls it Browse mode). In this mode the user is navigating through the screen reader’s off-screen model of the Flash application. Starting reading at the top of the page (hit ctrl+home to go to the top), the user might arrow down line by line to reach the button labeled “move focus”. The user hits enter or space and visually you can see that the focus has moved, but the virtual focus is not in the same place. Arrowing down again shows that the Virtual PC Cursor focus stayed on the button.
If the user is in Forms mode in JAWS (Browse mode off in Window-Eyes) there is no off-screen model. In this circumstance the screen reader focus is the system focus so moving it happens just as it does in a standard desktop application. For this and other reasons (that I’ll talk about in upcoming posts) we recommend that complex Flash and all Flex applications should be used in Forms mode on. This does present some other problems (reading text that is not focusable is a big one) but there are good solutions to address these concerns, but that is for another post.
It merits mention that make the focus move around within an application may not be the right thing to do for a user who can’t view the screen. However, it may save time and facilitate easy use. Move focus only when you really need to, and test with screen reader users.
In general, if you need to move the focus for a screen reader user, make sure you advise the user that they need to be in forms mode for your application.