Opened 10 years ago

Closed 9 years ago

#15619 closed defect (invalid)

[patch][ccla] dojox.widget.Standby: make Standby widget accessible

Reported by: mikeb Owned by: mikeb
Priority: undecided Milestone: tbd
Component: DojoX Widgets Version: 1.8.0b1
Keywords: Cc: cjolif
Blocked By: Blocking:


Make the popular dojox.widget.Standby widget accessible by having it flag the underlying target element with "aria-busy" attribute.

JAWS does not fully support aria-busy attribute yet on all elements... It seems like we get the best results from setting aria-busy on the node that has an ARIA role that is not role="presentation." (The patch detects this only for dijit.form.Button and adds aria-busy to the appropriate child node in that case. I couldn't find any other dijits where the main node is role=presentation but a child node is role=something.)

I tested with a scattering of different dijits to see how well JAWS respects aria-busy="true":

-hides the grid cells from the JAWS' field list menu
-Users can still tab into the grid, JAWS reads the first heading column then the alt text ("Please wait...")
-Press the down key to go to the next element, until the overlay is removed, then down key will cause JAWS to start reading out the grid data

-aria-busy on the main container (with role=Tree) does not seem to do anything for JAWS. JAWS users can tab into the tree and navigate with the keys just fine. I suppose we could detect if target is a tree and remove it from the tab order but I'd rather just wait for JAWS to natively support aria-busy on role=Tree

-Works on dijit.form.Button (because we apply aria-busy to the role="button" node). JAWS will remove the button from the field list
-Works on dijit.form.ComboBox? family, because role=combobox is set on the parent/container node; element is removed from the field list

-applying aria-busy doesn't seem to do anything for JAWS even though we apply it to role=tabpanel. JAWS users can hear the content before the Standby widget is finished

Keyboard support:
-No keyboard support is needed because unlike a lightbox, the user should not be able to exit or close the Standby

dojox.widget.Standby provides onShow and onHide stub methods. Developers can connect to these to provide further accessibility like intercepting keyboard events and removing the target from the tab order, but I think this should be done on a case by case basis.

Attachments (1)

Standby.js.patch (3.3 KB) - added by mikeb 10 years ago.

Download all attachments as: .zip

Change History (5)

Changed 10 years ago by mikeb

Attachment: Standby.js.patch added

comment:1 Changed 10 years ago by cjolif

Cc: cjolif added

comment:2 Changed 10 years ago by Douglas Hays

This patch does not handle Button subclasses nor derivatives, and the new _roleNode can be set to a string id for non-widget targets which then fails the new set aria-busy code.

comment:3 Changed 9 years ago by dylan

Owner: changed from dante to mikeb
Status: newpending

This patch would need to address doughays' comments, and also make sure it's updated for latest AMD and html5 data-* attrs, as well as recent APIs like on instead of connect.

comment:4 Changed 9 years ago by trac-o-bot

Resolution: invalid
Status: pendingclosed

Because we get so many tickets, we often need to return them to the initial reporter for more information. If that person does not reply within 14 days, the ticket will automatically be closed, and that has happened in this case. If you still are interested in pursuing this issue, feel free to add a comment with the requested information and we will be happy to reopen the ticket if it is still valid. Thanks!

Note: See TracTickets for help on using tickets.