Thursday, February 26, 2009

Accessibility Lesson: Reading order with TabOrder

Reading order for a flash file in a screenreader can be controlled by setting the tab order (item.tabIndex) on all the elements.

Elements with a specified tab order will read before static text without a tab order assigned, despite what positions the elements appear. E.G., a button with a specified tab order that sits below static text will be read before the static text, even though it sits below it.

Actual use of the "tab" key in a screenreader generally tabs only to interactive objects, like buttons. Dynamic text with a specified tab order won't necessarily be tabbed to with the tab key. The arrow keys should be able to get you to any element in the flash file that is visible to a screen reader.

If you have a button with dynamic text inside it, you may want to consider setting the tab order for the dynamic text box itself rather than the button it sits inside. Otherwise you would have to on the Button as well -- then the screen reader would read the accessibility name property of the button, and then after all the tabbed elements, read what is in the text box, essentially reading the button twice. It is probably a good idea to make text inside buttons dynamic text instead of static text.