Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
This is draft documentation mapping HTML elements and attributes to accessibility API Roles, States and Properties on a variety of platforms. It provides recommendations on deriving the accessible names and descriptions for HTML elements. It also provides accessible feature implementation examples.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This document is subject to change without notice.
This document was published by the HTML Working Group as a Working Draft. If you are not a HTML working group member and wish to make comments regarding this document please send them to public-html-comments@w3.org (subscribe, archives). If you are a HTML working group member and wish to make comments regarding this document, please send them to public-html@w3.org (subscribe, archives). All feedback is welcome.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
To provide access to desktop GUI applications, assistive technologies originally used heuristic techniques to determine the meaning of the user interface and built an alternative off screen model. For example, a row of labels displayed horizontally near the top of an application window might be a menu. Labels with a border drawn around them might be buttons. Heuristic techniques are not always accurate, however, and require assistive technologies to be updated whenever the software application is updated.
A much better technique is for the software application to provide the necessary information for interoperability with assistive technology. To meet this need, platform owners have developed specialized interfaces, called accessibility APIs, which can be used to communicate accessibility information about user interfaces to assistive technologies.
In the case of static Web pages, the Document Object Model (DOM) is used to represent the structure and state of the elements in the document being rendered by a user agent. The elements of the document are organized into a hierarchy of nodes known as the DOM tree. For traditional static Web pages, assistive technologies, such as screen readers, interact with user agents using the DOM. For UI elements that are known to be interactive, such as HTML form elements and desktop applications, assistive technologies may use platform accessibility APIs.
Accessibility APIs covered by this document are:
If User Agent developers need to expose to other accessibility APIs, it is recommended that they work closely with the developer of the platform where the API runs, and assistive technology developers on that platform.
HTML may have features that are not supported by accessibility APIs at the time of publication. There is not a one to one relationship between all features and platform accessibility APIs. When HTML roles, states and properties do not directly map to an accessibility API, and there is a method in the API to expose a text string, expose the undefined role, states and properties via that method.
IAccessible2 and ATK use object attributes to expose semantics that are not directly supported in the APIs. Object attributes are name-value pairs that are loosely specified, and very flexible for exposing things where there is no specific interface in an accessibility API. For example, at this time, the HTML5 header element can be exposed via an object attribute because accessibility APIs have no such role available.
For accessibility APIs that do not have "object attributes" per se, it is useful to find a similar mechanism or develop a new interface to expose name/value pairs. Under the Mac OS X Accessibility Protocol, all getters are already simply name-value pairs and it is possible to expose new semantics whenever necessary. Keep in mind, this also requires working with the assistive technology developers to gain support for the new semantics.
Notes:
HTML element | HTML4 | HTML5 | WAI-ARIA | MSAA | MSAA + UIA Express | UIA | IAccessible2 Note: _SYSTEM_ roles are from MSAA |
AT-SPI | AX AXRole AXSubrole AXRoleDescription |
---|---|---|---|---|---|---|---|---|---|
a (represents a hyperlink) |
yes | yes | link role |
ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. | Use MSAA or UIA guidance | HyperLink | ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. | ROLE_LINK | AXLink (null) link |
a (no href attribrute) |
yes | yes | none | ROLE_SYSTEM_ TEXT | Use MSAA or UIA guidance | Text | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
abbr |
yes | yes | none | ROLE_SYSTEM_ TEXT | Use MSAA or UIA guidance | Text | IA2_ROLE_TEXT_FRAME | ROLE_TEXT Object attribute role="abbr" |
AXGroup (null) group |
address |
yes | yes | none | ROLE_SYSTEM_GROUPING | Use MSAA or UIA guidance | Group | IA2_ROLE_PARAGRAPH Object attribute role="address" |
ROLE_PARAGRAPH Object attribute role="address" |
AXGroup AXLandmarkContentInfo content information Note: recommend AXRoleDescription of "address" to disambiguate from "contentinfo" landmark role. Refer to WebKit bug 83989 |
area (represents a hyperlink) |
yes | yes | link role |
ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. | Use MSAA or UIA guidance | HyperLink | ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. | ROLE_LINK | AXLink (null) link |
area (no href attribute) |
yes | yes | none | ROLE_SYSTEM_TEXT | Use MSAA or UIA guidance | Text | ROLE_SYSTEM_TEXT | ROLE_TEXT | Not mapped |
article |
no | yes | article role |
ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY ??ROLE_SYSTEM_GROUPING? |
Use MSAA or UIA guidance | ??Group or Text?? | ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | ROLE_DOCUMENT_FRAME + do not expose STATE_EDITABLE | AXGroup AXDocumentArticle article |
aside |
no | yes | complementary role |
ROLE_SYSTEM_GROUPING | Use MSAA or UIA guidance | Group | IA2_ROLE_COMPLEMENTARY_CONTENT Object attribute role="complementary" |
ROLE_SECTION Object attribute role="complementary" |
AXGroup AXLandmarkComplementary complementary |
audio |
no | yes | none | ROLE_SYSTEM_GROUPING | ? | Group | ROLE_SYSTEM_GROUPING | ROLE_PANEL | AXGroup Note: UI controls within the audio element exposed as AXToolbar. |
b |
yes | yes | none | ROLE_SYSTEM_ TEXT | Use MSAA or UIA guidance | Text | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
base |
yes | yes | none | Not mapped | Not mapped | Not mapped | Not mapped | Not mapped | Not mapped |
bdo |
yes | yes | none | ROLE_SYSTEM_ TEXT | Use MSAA or UIA guidance | text | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
blockquote |
yes | yes | none | ROLE_SYSTEM_GROUPING | Use MSAA or UIA guidance | Group | IA2_ROLE_SECTION | ROLE_SECTIONÂ | AXGroup (null) group |
body |
yes | yes | document role |
ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | Use MSAA or UIA guidance | Document | ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | ROLE_DOCUMENT_FRAME + STATE_READONLY | AXGroup (null) group |
br |
yes | yes | none | ROLE_SYSTEM_ WHITESPACE | ? | ? | ROLE_SYSTEM_ WHITESPACE | ? | Not mapped |
button |
yes | yes | button role |
ROLE_SYSTEM_PUSHBUTTON. | Use MSAA or UIA guidance | Button ?? When it is in a <menu> it defines a command. Is it still a button, or is it a menuitem?? |
ROLE_SYSTEM_PUSHBUTTON | ROLE_PUSH_BUTTON | AXButton (null) button |
canvas |
no | yes | none | SYSTEM_ROLE_GRAPHIC | Use MSAA or UIA guidance | Image NOTE: subdom elements will be mapped separately |
IA2_ROLE_CANVAS | ROLE_CANVAS | AXImage (null) image |
caption |
yes | yes | none | ROLE_SYSTEM_ TEXT + STATE_SYSTEM_READONLY |
Use MSAA or UIA guidance | text The parent table has a UIA_LabeledByPropertyId pointing to the UIA element for the caption element. |
IA2_ROLE_CAPTION | ROLE_CAPTION | AXGroup (null) group |
cite |
yes | yes | none | ROLE_SYSTEM_ TEXT ??GROUP?? |
text | text ??group?? |
ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
code |
yes | yes | none | ROLE_SYSTEM_ TEXT | text | text | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
col |
yes | yes | none | ?ROLE_SYSTEM_COLUMN | ROLE_SYSTEM_COLUMN | ? | not mapped | not mapped | Not mapped |
colgroup |
yes | yes | none | ?ROLE_SYSTEM_GROUPING | ?TODO: look in more detail at UIA table implemenation | ?TODO: look in more detail at UIA table implemenation | not mapped | not mapped | Not mapped |
command (in the command state whose parent is a menu) |
no | yes | menuitem role |
ROLE_SYSTEM_MENUITEM | Use UIA guidance | MenuItem |
ROLE_SYSTEM_MENUITEM | ROLE_MENU_ITEM | AXMenuItem (null) menu item |
command (in the command state whose parent is NOT a menu) |
Use UIA guidance | Button | |||||||
command (in the checkbox state whose parent is a menu) |
Use UIA guidance | MenuItem with Toggle pattern | |||||||
command (in the checkbox state whose parent is NOT a menu) |
Use UIA guidance | Checkbox | |||||||
command (in the radio state whose parent is a menu) |
Use UIA guidance | MenuItem with Toggle pattern | |||||||
command (in the radio state parent is NOT a menu) |
Use UIA guidance | RadioButton | |||||||
Command: an element that defines a command, whose Type facet is "checkbox", and that is a descendant of a menu element whose type attribute is in the list state |
no | yes | menuitemcheckbox role, with the aria-checked state set to "true" if the command's Checked State facet is true, and "false" otherwise |
ROLE_SYSTEM_CHECKBUTTON or ROLE_SYSTEM_MENUITEM |
Use UIA guidance | MenuItem with Toggle pattern | IA2_ROLE_CHECK_MENU_ITEM + object attribute checkable="true" | ROLE_CHECK_MENU_ITEM + object attribute checkable="true" | AXCheckbox (null) check box |
Command: an element that defines a command, whose Type facet is "command", and that is a descendant of a menu element whose type attribute is in the list state |
no | yes | menuitem role |
ROLE_SYSTEM_MENUITEM | Use either MSAA or UIA guidance | MenuItem | ROLE_SYSTEM_MENUITEM | ROLE_MENU_ITEM | depends on element used to define command |
Command: an element that defines a command, whose Type facet is "radio", and that is a descendant of a menu element whose type attribute is in the list state |
no | yes | menuitemradio role, with the aria-checked state set to "true" if the command's Checked State facet is true, and "false" otherwise |
ROLE_SYSTEM_RADIOBUTTON or ROLE_SYSTEM_MENUITEM | Use UIA guidance | MenuItem with Toggle pattern | IA2_ROLE_RADIO_MENU_ITEM + object attribute checkable="true" | ROLE_RADIO_MENU_ITEM + object attribute checkable="true" | AXRadioButton (null) radio button |
datalist |
no | yes | listbox role, with the aria-multiselectable property set to "false" |
ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. | Use UIA guidance | Combobox | ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. | ROLE_COMBO_BOX + STATE_EXPANDABLE | AXComboBox (null) combo box |
dd |
yes | yes | none | ROLE_SYSTEM_ TEXT | ? | ? | IA2_ROLE_PARAGRAPH | ROLE_TEXT | AXGroup AXDefinition definition |
del |
yes | yes | none | ROLE_SYSTEM_ TEXT | ? | ? | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
details |
no | yes | none ??dialog seems closer?? |
ROLE_SYSTEM_GROUPING | Group ??window?? |
ROLE_SYSTEM_GROUPING | ROLE_PANEL | ? | |
dfn |
yes | yes | none | ROLE_SYSTEM_ TEXT | ? | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
|
dl |
yes | yes | none | ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY | Use MSAA or UIA guidance | List | ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY | ROLE_LIST + do not expose STATE_EDITABLE | AXList AXDefinitionList definition list |
dt |
yes | yes | none | ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY | ListItem | ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY | ROLE_LISTITEM + do not expose STATE_EDITABLE | AXGroup AXTerm term |
|
div |
yes | yes | none | ROLE_SYSTEM_GROUPING | ? | IA2_ROLE_SECTION | ROLE_SECTION | AXGroup (null) group |
|
em |
yes | yes | none | ROLE_SYSTEM_ TEXT | ? | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
|
embed |
no | yes | none | ROLE_SYSTEM_CLIENT | ?Pane? Window? | ROLE_SYSTEM_CLIENT | ROLE_EMBEDDED | depends on format of data file | |
fieldset |
yes | yes | none | ROLE_SYSTEM_GROUPING | Use UIA or MSAA guidance | Group | ROLE_SYSTEM_GROUPING | ROLE_PANEL |
AXGroup (null) group |
figcaption |
no | yes | none | ROLE_SYSTEM_ TEXT | se UIA or MSAA guidance | Text | IA2_ROLE_CAPTION |
ROLE_CAPTION Object attribute role="figcaption" |
AXGroup (null) group |
figure |
no | yes | none | ROLE_SYSTEM_GROUPING | se UIA or MSAA guidance | Group ??discuss graphic/image vs. group?? |
ROLE_SYSTEM_GROUPING note: accessible name from child figcaption |
ROLE_PANEL Object attribute role="figuret" |
? |
footer |
no | yes | none | ROLE_SYSTEM_GROUPING | se UIA or MSAA guidance | Expose as text string "footer" in UIAutomationType_String ??discuss exposing localized type for all unmapped elements, or is it better to expose as Group?? |
ROLE_SYSTEM_GROUPING Object attribute role="footer" |
ROLE_PANEL Object attribute role="footer" |
If contained in Otherwise: Refer to Webkit bug 78967 |
form |
yes | yes | form role |
ROLE_SYSTEM_GROUPING | se UIA or MSAA guidance | Group | IA2_ROLE_FORM | ROLE_PANEL | AXGroup AXLandmarkForm form |
frame |
yes | no | ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY ??currently mapped as pane not document. the document inside is mapped as document?? |
ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY ??currently mapped as pane not document. the document inside is mapped as document?? |
Document | ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | ROLE_DOCUMENT_FRAME + STATE_READONLY | AXWebArea (null) HTML content |
|
frameset |
yes | no | ? | ? | ? | ? | ? | Not mapped | |
head |
yes | yes | none | Not mapped | Not mapped | Not mapped | Not mapped | Not mapped | Not mapped |
header |
no | yes | none | ROLE_SYSTEM_GROUPING | ROLE_SYSTEM_GROUPING | Group (don't put header in localized type string because there is a header role for table headers) |
ROLE_SYSTEM_GROUPING Object attribute role="header" |
ROLE_PANEL Object attribute role="header" |
If contained in Otherwise: Refer to Webkit bug 78967 |
hgroup |
no | yes | none |
ROLE_SYSTEM_GROUPING | ROLE_SYSTEM_GROUPING | ROLE_SYSTEM_GROUPING | ? | ||
h1 to h6 (with an hgroup ancestor) |
no | yes | none |
ROLE_SYSTEM_TEXT | ROLE_SYSTEM_TEXT | Text | ROLE_SYSTEM_TEXT | ROLE_TEXT | AXHeading (null) heading Use AXLevel attribute to expose the heading level. |
h1 to h6 (with NO hgroup ancestor) |
yes | yes | heading role, with the aria-level property set to the element's outline depth |
ROLE_SYSTEM_TEXT or use xml-roles | ROLE_SYSTEM_TEXT | Text | IA2_ROLE_HEADING Use the IAccessible2::attributes heading-level attribute to determine the heading level. | ROLE_HEADING | AXHeading (null) heading Use AXLevel attribute to expose the heading level. |
hr |
yes | yes | separator role |
ROLE_SYSTEM_SEPARATOR | ROLE_SYSTEM_SEPARATOR | Separator | ROLE_SYSTEM_SEPARATOR | ROLE_SEPARATOR | ? |
HTML |
yes | yes | none | Not mapped | Not mapped | Not mapped | Not mapped | Not mapped | Not mapped |
i |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
iframe |
yes | yes | none | ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY ??pane?? |
ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | Document ??Pane?? |
ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | ROLE_DOCUMENT_FRAME + STATE_READONLY | AXWebArea (null) html content |
img |
yes | yes | img role |
ROLE_SYSTEM_GRAPHIC | ROLE_SYSTEM_GRAPHIC | Image | ROLE_SYSTEM_GRAPHIC | ROLE_IMAGE | AXImage (null) image |
img (alt attribute is empty) |
yes | yes | presentation role |
ROLE_SYSTEM_GRAPHIC with AccName set to empty string | ROLE_SYSTEM_GRAPHIC with AccName set to empty string | Image with NameProperty set to the empty string | Do not expose this object |
Do note expose this object | Not mapped |
input (type attribute in the Button state) |
yes | yes | button role |
ROLE_SYSTEM_PUSHBUTTON | ROLE_SYSTEM_PUSHBUTTON | Button | ROLE_SYSTEM_PUSHBUTTON | ROLE_PUSH_BUTTON | AXButton (null) button |
input (type attribute in the Button state and parent is a menu) |
MenuItem | ROLE_SYSTEM_MENUITEM | ROLE_MENU_ITEMÂ | ||||||
input (type attribute in the Color state) |
no | yes | when implmented as a textbox, ROLE_SYSTEM_TEXT When implemented as a color picker, implement IUIAutomationSelectionPattern for the container and IUIAutomationSelectionItemPattern for each color choice |
?? | If implemented as a textbox, Edit If implemented as a color picker, set localized control type string to Color Picker Implement IUIAutomationSelectionPattern for the container and IUIAutomationSelectionItemPattern for each color choice |
IA2_ROLE_COLOR_CHOOSER | ROLE_COLOR_CHOOSER | If implemented as a textbox, AXTextField (null) text field If implemented as a color picker, AXColorWell (null) color chooser |
|
input (type attribute in the Checkbox state) |
yes | yes | checkbox role, with the aria-checked state set to "mixed" if the element's indeterminate IDL attribute is true, or "true" if the element's checkedness is true, or "false" otherwise |
ROLE_SYSTEM_CHECKBUTTON | MSAA ROLE_SYSTEM_CHECKBUTTON | Checkbox | ROLE_SYSTEM_CHECKBUTTON Object attribute checkable="true" |
ROLE_CHECK_BOX + STATE_CHECKED | AXCheckBox (null) check box |
input (type attribute in the Checkbox state and parent is a menu) |
MenuItem with Toggle pattern | IA2_ROLE_CHECK_MENU_ITEMÂ Object attribute checkable="true" |
ROLE_CHECK_MENU_ITEMÂ Object attribute checkable="true" |
||||||
input (type attribute in the Date state) |
no | yes | none | ROLE_SYSTEM_DROPLIST | UIA Calendar | Calendar | IA2_ROLE_DATE_EDITOR | ROLE_CALENDAR (not supported by FF) | AXDateField (null) date field |
input (type attribute in the Date and Time state) |
no | yes | none | ROLE_SYSTEM_DROPLIST | UIA Calendar | Calendar | IA2_ROLE_DATE_EDITOR | ROLE_CALENDAR (not supported by FF) | AXTextField (null) text field |
input (type attribute in the Local Date and Time state) |
no | yes | none | ROLE_SYSTEM_DROPLIST | UIA Calendar | Calendar | IA2_ROLE_DATE_EDITOR | ROLE_CALENDAR (not supported by FF) | AXTextField (null) text field |
input (type attribute in the E-mail state with no suggestions source element) |
no | yes | textbox role |
ROLE_SYSTEM_TEXT | MSAA ROLE_SYSTEM_TEXT or UIA Edit |
Edit | IA2_STATE_SINGLE_LINE | ROLE_ENTRY + STATE_SINGLE_LINE | AXTextField (null) text field |
input (type attribute in the File Upload state) |
yes | yes | none | ROLE_SYSTEM_PUSHBUTTON. | ROLE_SYSTEM_PUSHBUTTON | Button | IA2_ROLE_FILE_CHOOSER | ROLE_PUSH_BUTTON + ROLE_FILE_CHOOSER | AXButton (null) button |
input (type attribute in the Hidden state) |
yes | yes | none | Do not expose this object |
Do not expose this object | Do not expose this object | Do not expose this object | Do not expose this object |
Do not expose this object |
input (type attribute in the Image Button state) |
yes | yes | button role |
ROLE_SYSTEM_PUSHBUTTON. | ROLE_SYSTEM_PUSHBUTTON | Button | ROLE_SYSTEM_PUSHBUTTON. | ROLE_PUSH_BUTTON | AXButton (null) button |
input (type attribute in the Image Button state and parent is a menu) |
?? does this define a command?? | ||||||||
input (type attribute in the Month state) |
no | yes | none | ROLE_SYSTEM_DROPLIST | UIA Calendar | Calendar | IA2_ROLE_DATE_EDITOR | ROLE_DATE_EDITOR | AXTextField (null) text field |
input (type attribute in the Number state) |
no | yes | spinbutton role |
ROLE_SYSTEM_SPINBUTTON | ROLE_SYSTEM_SPINBUTTON | Spinner | ROLE_SYSTEM_SPINBUTTON | ROLE_SPIN_BUTTON | AXTextField Note: stepper controls are assigned roles seperately from the AXTextField in Webkit. The stepper is not currently recognized by VoiceOver. |
input (type attribute in the Password state) |
yes | yes | textbox role |
ROLE_SYSTEM_TEXT with STATE_SYSTEM_PROTECTED | MSAA ROLE_SYSTEM_TEXT with STATE_SYSTEM_PROTECTED or UIA Edit with UIA_IsPasswordPropertyId |
Edit with UIA_IsPasswordPropertyId | IA2_STATE_SINGLE_LINE | ROLE_ENTRY + STATE_SINGLE_LINE | AXTextField AXSecureTextField secure text field |
input (type attribute in the Radio Button state) |
yes | yes | radio role, with the aria-checked state set to "true" if the element's checkedness is true, or "false" otherwise |
ROLE_SYSTEM_RADIOBUTTON | ROLE_SYSTEM_RADIOBUTTON | RadioButton | ROLE_SYSTEM_RADIOBUTTON | ROLE_RADIO_BUTTON | AXRadioButton (null) radio button |
input (type attribute in the Radio Button state and parent is a menu) |
MenuItem with Toggle pattern | ||||||||
input (type attribute in the Range state) |
no | yes | slider role |
ROLE_SYSTEM_SLIDER | ROLE_SYSTEM_SLIDER | Slider | ROLE_SYSTEM_SLIDER | ROLE_SLIDER | Slider: AXOrientation: AXHorizontalOrientation Thumb: |
input (type attribute in the Reset Button state) |
yes | yes | button role |
ROLE_SYSTEM_PUSHBUTTON | ROLE_SYSTEM_PUSHBUTTON | Button | ROLE_SYSTEM_PUSHBUTTON | ROLE_PUSH_BUTTON | AXButton (null) button |
input (type attribute in the Search state with no suggestions source element) |
no | yes | textbox role |
ROLE_SYSTEM_TEXT | MSAA ROLE_SYSTEM_TEXT or UIA Edit |
Edit | IA2_STATE_SINGLE_LINE | ROLE_ENTRY + STATE_SINGLE_LINE | AXTextField AXSearchField search field |
input (type attribute in the Submit Button state) |
yes | yes | button role |
ROLE_SYSTEM_PUSHBUTTON | ROLE_SYSTEM_PUSHBUTTON | Button | ROLE_SYSTEM_PUSHBUTTON | ROLE_PUSH_BUTTON | AXButton (null) button |
input (type attribute in the Telephone state with no suggestions source element) |
no | yes | textbox role |
ROLE_SYSTEM_TEXT | MSAA ROLE_SYSTEM_TEXT or UIA Edit |
Edit | IA2_STATE_SINGLE_LINE | ROLE_ENTRY + STATE_SINGLE_LINE | AXTextField (null) text field |
input (type attribute in the Text state with no suggestions source element) |
yes | yes | textbox role |
ROLE_SYSTEM_TEXT | MSAA ROLE_SYSTEM_TEXT or UIA Edit |
Edit | IA2_STATE_SINGLE_LINE | ROLE_ENTRY + STATE_SINGLE_LINE | AXTextField (null) text field |
input (type attribute in the Text, Search, Telephone, URL, or E-mail states with a suggestions source element) |
no | yes | combobox role, with the aria-owns property set to the same value as the list attribute |
ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP | ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP | Combobox | ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP | ROLE_COMBO_BOX + STATE_EXPANDABLE + object attribute haspopup="true" | AXTextField (null) text field |
input (type attribute in the Time state) |
no | yes | none | ROLE_SYSTEM_SPINBUTTON | ROLE_SYSTEM_SPINBUTTON | Spinner | ROLE_SYSTEM_SPINBUTTON | ROLE_SPIN_BUTTON | AXTimeField (null) time field |
input (type attribute in the URL state with no suggestions source element) |
no | yes | textbox role |
ROLE_SYSTEM_TEXT | MSAA ROLE_SYSTEM_TEXT or UIA Edit |
Edit | IA2_STATE_SINGLE_LINE | ROLE_ENTRY + STATE_SINGLE_LINE | AXTextField (null) text field |
input (type attribute in the Week state) |
no | yes | none | ROLE_SYSTEM_DROPLIST | UIA Calendar | Calendar | IA2_ROLE_DATE_EDITOR | ROLE_CALENDAR | AXTextField (null) text field |
ins |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | ?text | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
keygen |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | ? | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
keygen |
no | yes | listbox role, with the aria-multiselectable property set to "false" |
ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. | Use MSAA or UIA guidance | Combobox | ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. | ROLE_COMBO_BOX + STATE_EXPANDABLE + object attribute haspopup="true" | AXList (null) list |
label |
yes | yes | none | ROLE_SYSTEM_TEXT | Use UIA guidance | Text. The parent input has a UIA_LabeledByPropertyId pointing to the UIA element for the legend element. When the label element has a for attribute pointing to a valid IDREF, the referenced element has a UIA_LabeledByPropertyId pointing to the UIA element for the label element. |
IA2_ROLE_LABEL | ROLE_LABEL | AXGroup (null) group |
legend |
yes | yes | none | ROLE_SYSTEM_TEXT | ROLE_SYSTEM_TEXT SHOULD use UIA_LabeledByPropertyId (see UIA column) |
Text. The parent fieldset has a UIA_LabeledByPropertyId pointing to the UIA element for the legend element. |
IA2_ROLE_LABEL | ROLE_LABEL | AXGroup (null) group |
li (parent is an ol or ul ) |
yes | yes | listitem role |
ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY | ListItem | ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY | ROLE_LISTITEM + do not expose STATE_EDITABLE | AXGroup (null) group |
|
li (parent is a menu ) |
no | yes | listitem role |
ROLE_SYSTEM_MENUITEM + STATE_SYSTEM_HASPOPUP |
ROLE_SYSTEM_MENUITEM + STATE_SYSTEM_HASPOPUP |
MenuItem | ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY | ROLE_LISTITEM + do not expose STATE_EDITABLE | AXGroup (null) group |
link |
yes | yes | link role |
ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. | Use either MSAA or UIA guidance | HyperLink | ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. | ROLE_LINK | Not mapped |
map |
yes | yes | none | Not mapped | Not mapped | Not mapped | Not mapped | Not mapped | Not mapped |
mark |
no | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
math |
no | yes | math role |
ROLE_SYSTEM_EQUATION | ROLE_SYSTEM_EQUATION | ? | ROLE_SYSTEM_EQUATION | ROLE_UNKNOWN | AXGroup AXDocumentMath math |
menu (type attribute in the context menu state) |
no | yes | menu role |
ROLE_SYSTEM_MENUPOPUP | Use either MSAA or UIA guidance | Menu | ROLE_SYSTEM_MENUPOPUP | ROLE_MENU. These objects should not be exposed for a submenu if there is a parent menu item spawning the submenu | AXMenu (null) menu |
menu (type attribute in the list state) |
no | yes | menu role |
ROLE_SYSTEM_MENUPOPUP | Use either MSAA or UIA guidance | Menu | ROLE_SYSTEM_MENUPOPUP | ROLE_MENU. These objects should not be exposed for a submenu if there is a parent menu item spawning the submenu | AXMenu (null) menu |
menu (type attribute in the toolbar state) |
no | yes | toolbar role |
ROLE_SYSTEM_TOOLBAR | Use either MSAA or UIA guidance | ToolBar | ROLE_SYSTEM_TOOLBAR | ROLE_TOOL_BAR | AXMenu (null) menu |
meta |
yes | yes | none | Not mapped | Not mapped | Not mapped | Not mapped | Not mapped | Not mapped |
meter |
no | yes | none | ROLE_SYSTEM_ TEXT ?? not sure this is right. maybe a number or value or something? |
Use UIA guidance | set Locliazed Control Type to "Meter" Implement Range Value control pattern with IsReadOnly property set to true |
ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
nav |
no | yes | navigation role |
ROLE_SYSTEM_GROUPING | ?? | ??text | ROLE_SYSTEM_GROUPING Object attribute role="navigation" |
ROLE_PANEL Object attribute role="navigation" |
AXGroup AXLandmarkNavigation navigation |
noscript |
yes | yes | none | Not mapped ?? grouping? |
Not mapped | Not mapped | Not mapped | Not mapped | Not mapped |
object |
yes | yes | no role | ?? would pane or window work?? depends on format of data file. examples include document, client, graphic and unknown (tested using object test suite). |
Use MSAA or UIA guidance | depends on format of data file. | Refer to MSAA | ROLE_EMBEDDED | depends on format of data file. |
ol |
yes | yes | list role |
ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY | Use MSAA or UIA guidance | List | ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY | ROLE_LIST + do not expose STATE_EDITABLE | AXList AXContentList list |
optgroup |
yes | yes | group role |
ROLE_SYSTEM_GROUPING | Use MSAA or UIA guidance | Group | ROLE_SYSTEM_GROUPING | ROLE_PANEL | AXMenuItem (null) menu item |
option (in a list of options or represents a suggestion in a datalist ) |
no | yes | option role, with the aria-selected state set to "true" if the element's selectedness is true, or "false" otherwise. |
ROLE_SYSTEM_LISTITEM | Use MSAA or UIA guidance | ListItem (note that SelectionItem pattern is required for ListItems) |
ROLE_SYSTEM_LISTITEM | ROLE_LIST_ITEM | AXMenuItem (null) menu item |
output |
no | yes | status role |
ROLE_SYSTEM_STATUSBAR ??text read-only seems closer. this is a label that is calculated?? |
Use UIA guidance | Text. When the output element has a for attribute pointing to a valid IDREF, the referenced element has a UIA_LabeledByPropertyId pointing to the UIA element for the output element. |
IA2_ROLE_SECTION note: object attribute aria-live=polite IA2 controlled_by relation defined by label element @for attribute. |
ROLE_SECTION note: object attribute aria-live=polite controlled_by relation defined by label element @for attribute. |
AXGroup (null) group |
p |
yes | yes | none | ROLE_SYSTEM_TEXT | Use MSAA or UIA guidance | Text | IA2_ROLE_PARAGRAPH | ROLE_PARAGRAPH | AXGroup (null) group |
param |
yes | yes | none | Not mapped |
Not mapped | Not mapped | Not mapped | Not mapped |
Not mapped |
pre |
yes | yes | none | ROLE_SYSTEM_ TEXT ??group? |
Use MSAA or UIA guidance | Text ??group?? |
ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
progress |
no | yes | progressbar role, with, if the progress bar is determinate, the aria-valuemax property set to the maximum value of the progress bar, the aria-valuemin property set to zero, and the aria-valuenow property set to the current value of the progress bar |
ROLE_SYSTEM_PROGRESSBAR + STATE_SYSTEM_READONLY | Use MSAA or UIA guidance | ProgressBar | ROLE_SYSTEM_PROGRESSBAR + STATE_SYSTEM_READONLY | ROLE_PROGRESS_BAR + do not expose EXTENDED_STATE_EDITABLE | AXProgressIndicator (null) progress indicator Use AXValue to expose current value. |
q |
yes | yes | none | ROLE_SYSTEM_ TEXT ??group?? |
Use MSAA or UIA guidance | Text ??group?? |
ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
rp |
no | yes | none | ROLE_SYSTEM_ TEXT ??group?? |
Use MSAA or UIA guidance | Text ??group?? |
ROLE_SYSTEM_ TEXT | ROLE_TEXT | ? |
rt |
no | yes | none | ROLE_SYSTEM_ TEXT | Use MSAA or UIA guidance | Text | ROLE_SYSTEM_ TEXT | ROLE_TEXT | ? |
ruby |
no | yes | none | ROLE_SYSTEM_ TEXT ??group?? |
Use MSAA or UIA guidance | Text ??group?? |
ROLE_SYSTEM_ TEXT | ROLE_TEXT | ? |
s |
? | yes | none | ROLE_SYSTEM_ TEXT ??group?? |
Use MSAA or UIA guidance | Text ??group?? |
ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
samp |
yes | yes | none | ROLE_SYSTEM_ TEXT ??group? |
Use MSAA or UIA guidance | Text ??group?? |
ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
script |
yes | yes | none | Not mapped | Not mapped | Not mapped | Not mapped | Not mapped | Not mapped |
section |
no | yes | region role |
ROLE_SYSTEM_PANE ??really? that's what a frame is. I think grouping is closer?? |
?? | ??Text or Group?? |
IA2_ROLE_SECTION | ROLE_PANEL | AXGroup AXDocumentRegion region |
select (with a multiple attribute) |
yes | yes | listbox role, with the aria-multiselectable property set to "true" |
ROLE_SYSTEM_LIST + |
Use MSAA or UIA guidance | list with ISelectionProvider::CanSelectMultiple set to true |
ROLE_SYSTEM_LIST + STATE_SYSTEM_MULTISELECTABLE + STATE_SYSTEM_READONLY |
ROLE_LIST + STATE_MULTISELECTABLE | AXList (null) list |
select (with NO multiple attribute) |
yes | yes | listbox role, with the aria-multiselectable property set to "false" |
ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. | Use MSAA or UIA guidance | Combobox | ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. | ROLE_COMBO_BOX + STATE_EXPANDABLE + object attribute haspopup="true" | AXPopUpButton (null) pop up button |
small |
yes | yes | none | ROLE_SYSTEM_ TEXT ??group?? |
Use MSAA or UIA guidance | Text ??group?? |
ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
source |
no | yes | none | Do not expose this object | Do note expose this object | Do not expose this object ??does it populate anything in the parent vidoe or audio object ?? |
Do not expose this object | Do not expose this object | Do not expose this object |
span |
yes | yes | none | ROLE_SYSTEM_GROUPING | Use MSAA or UIA guidance | Group | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
strong |
yes | yes | none | ROLE_SYSTEM_ TEXT ??group?? |
Use MSAA or UIA guidance | Text ??group?? |
ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
style |
yes | yes | none | Do not expose this object |
Do note expose this object | Do not expose this object | Do not expose this object | Do not expose this object |
Do not expose this object |
sub |
yes | yes | none | ROLE_SYSTEM_ TEXT ??group? |
Use MSAA or UIA guidance | Text ??group?? |
ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
summary |
no | yes | none | ROLE_SYSTEM_PUSHBUTTON ??has popup?? |
Use MSAA or UIA guidance | Button with ExpandCollapse pattern |
ROLE_SYSTEM_PUSHBUTTON | ROLE_PUSHBUTTON + |
AXDisclosureTriangle |
sup |
yes | yes | none | ROLE_SYSTEM_ TEXT ??group?? |
Use MSAA or UIA guidance | ??text or group?? | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
svg |
no | yes | none | ROLE_SYSTEM_GRAPHIC | ROLE_SYSTEM_GRAPHIC | Image | DIAGRAM |
DIAGRAM |
AXGroup (null) group |
table |
yes | yes | none | ROLE_SYSTEM_TABLE | Use MSAA or UIA guidance | DataGrid with Table pattern | Use IAccessibleTable2 interface | ROLE_TABLE | AXTable (null) table |
tbody |
yes | yes | none | ROLE_SYSTEM_GROUPING | Use MSAA or UIA guidance | Group | ROLE_SYSTEM_GROUPING | Not mapped | |
td |
yes | yes | none | ROLE_SYSTEM_CELL | Use MSAA or UIA guidance | DataItem | ROLE_SYSTEM_CELL | ROLE_TABLE_CELL | AXCell (null) cell |
textarea |
yes | yes | textbox role, with the aria-multiline property set to "true" |
ROLE_SYSTEM_TEXT | Use MSAA or UIA guidance | Text or Edit? | state: STATE_MULTI_LINE |
ROLE_ENTRY | AXTextArea (null) text entry area |
tfoot |
yes | yes | none | ROLE_SYSTEM_GROUPING | Use MSAA or UIA guidance | Group | ROLE_SYSTEM_GROUPING | ROLE_PANEL | Not mapped |
th (is neither a column header nor a row header) |
yes | yes | none | ROLE_SYSTEM_CELL |
Use MSAA or UIA guidance | DataItem |
ROLE_SYSTEM_CELL | ROLE_TABLE_CELL | AXCell (null) cell |
th (is a column header) |
yes | yes | none | ROLE_SYSTEM_COLUMNHEADER | Use MSAA or UIA guidance | header + OrientationType_Vertical ??seems like it should be HeaderItem. ARIA UAIG has DataItem?? |
ROLE_COLUMN_HEADER | AXCell (null) cell Parent table also implements AXColumnHeaderUIElements property that is a list of pointers to the column header cells. Parent table also implements AXHeader property that is a pointer to the row or group containing the columnheader cells. |
|
th (is a row header) |
yes | yes | none | ROLE_SYSTEM_ROWHEADER | Use MSAA or UIA guidance | header + OrientationType_Horizontal ?seems like it should be HeaderItem. ARIA UAIG has DataItem?? |
ROLE_ROW_HEADER | AXCell (null) cell Parent table also implements AXRowHeaderUIElements property that is a list of pointers to the row header cells |
|
thead |
yes | yes | none | ROLE_SYSTEM_GROUPING | ? | Header | ROLE_SYSTEM_GROUPING | ROLE_PANEL | Not mapped |
time |
no | yes | none | ROLE_SYSTEM_ TEXT | ? | ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
|
title |
yes | yes | none | Not mapped |
Not mapped | Not mapped | Not mapped | Not mapped |
Not mapped |
tr |
yes | yes | none | ROLE_SYSTEM_ROW | Use MSAA or UIA guidance | DataItem Also requires SelectionItem pattern |
ROLE_SYSTEM_ROW | ROLE_LIST_ITEM | AXRow AXTableRow row |
ul |
yes | yes | list role |
ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY | Use MSAA or UIA guidance | List | ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY | ROLE_LIST + do not expose STATE_EDITABLE | AXList AXContentList list |
var |
yes | yes | none | ROLE_SYSTEM_ TEXT | Use MSAA or UIA guidance? | Text note: not group, because it would usually only have a wo |
ROLE_SYSTEM_ TEXT | ROLE_TEXT | AXGroup (null) group |
video |
no | yes | none | ? | ? | ? | ? | ? | AXGroup Note: UI controls within the video element exposed as AXToolbar. |
wbr |
no | yes | none | none | none | none | none | none | AXGroup (null) group |
Attribute | Element(s) | HTML4 | HTML5 | WAI-ARIA | MSAA | UIA | IAccessible2 | AT-SPI | AX | Comments |
---|---|---|---|---|---|---|---|---|---|---|
accesskey |
HTML elements |
Yes | Yes | not mapped | accKeyboardShortcut | AcceleratorKey | accKeyboardShortcut | ? | AXAccessKey | |
alt |
area ; img ; input |
Yes | Yes | not mapped | accName | Name | RELATION_LABEL_FOR | AXDescription | ||
autocomplete "on|off" or omitted(default) |
form ; input |
No | Yes |
note: the ARIA attribute and the HTML attribute have disparate features. |
not mapped | not mapped | Object attribute autocomplete Expose the STATE_SUPPORTS_ |
Object attribute autocomplete Expose the STATE_SUPPORTS_AUTOCOMPLETION equivalent state |
not mapped | |
autofocus |
button ; input ; keygen ; select ; textarea |
No | Yes | not mapped - aria-flowto ? |
N/A | N/A | N/A | N/A | N/A | |
autoplay |
audio ; video |
No | Yes | not mapped | N/A | N/A | N/A | N/A | N/A | |
checked (if present) |
command ; input |
Yes | Yes | aria-checked (state)="true" (state) |
Set the STATE_SYSTEM_CHECKED state | Expose as ToggleState property in Toggle Control Pattern | Expose object attribute checkable="true" | Expose object attribute checkable="true" | AXValue="1" | |
checked (if absent) |
command ; input |
Yes | Yes | aria-checked (state)="false" |
Clear the STATE_SYSTEM_CHECKED state | Expose as ToggleState property in Toggle Control Pattern. | Expose object attribute checkable="true" | Expose object attribute checkable="true" | AXValue="0" | |
cite |
blockquote ; del ; ins ; q |
Yes | Yes | AXURL | ||||||
cols |
textarea |
Yes | Yes | AXRangeForLine | ||||||
colspan |
td ; th |
Yes | Yes | AXColumnIndexRange pos=column index; len=colspan value |
||||||
contenteditable |
HTML elements | No | Yes | ? | ||||||
contextmenu |
HTML elements | No | Yes | aria-haspopup ="true" |
Expose as STATE_SYSTEM_HASPOPUP. If on a push button, change the role to ROLE_SYSTEM_BUTTONMENU. | Expose state of the pop-up activities in the ExpandCollapseState property in the ExpandCollapse Control Pattern. | Expose as STATE_SYSTEM_HASPOPUP. If on a push button, change the role to ROLE_SYSTEM_BUTTONMENU. | Object attribute haspopup="true" | Expose AXShowMenu and AXPress actions | |
controls |
audio ; video |
No | Yes | Controls exposed as AXToolbar | ||||||
datetime |
del ; ins |
No | Yes | ? | ||||||
datetime |
time |
No | Yes | ? | ||||||
dir |
HTML elements | ? | Yes | ? | ||||||
dirname |
input ; textarea |
? | Yes | ? | ||||||
disabled |
button ; command ; fieldset ; input ; keygen ; optgroup ; option ; select ; textarea |
yes | Yes | AXEnabled="false" | ||||||
draggable |
HTML elements | no | Yes | ? | ||||||
dropzone |
HTML elements | no | Yes | ? | ||||||
headers |
td ; th |
yes | Yes | Expose via AXColumnHeaderUIElements and AXRowHeaderUIElements | ||||||
hidden |
HTML elements | no | Yes | Not exposed in AX API | ||||||
high |
meter |
no | Yes | ? | ||||||
href |
a ; area |
yes | Yes | AXURL | ||||||
href |
link |
yes | Yes | |||||||
hreflang |
a ; area ; link |
yes | Yes | |||||||
kind |
track |
no | Yes | |||||||
label |
command ; menu ; optgroup ; option ; track |
? | Yes | |||||||
lang |
HTML elements | yes | Yes | |||||||
longdesc |
img , frame , iframe |
yes | no | no | accdescription (Internet Explorer only) | Not mapped | Not mapped | Not mapped | Not mapped | IE 8+ populates the accdescription with the value of the longdesc attribute. This is brittle as it is overwritten when aria-describedby is used. |
low |
meter |
no | Yes | |||||||
max |
input |
no | Yes | AXMaxValue | ||||||
max |
meter ; progress |
no | Yes | AXMaxValue | ||||||
maxlength |
input ; textarea |
yes | Yes | |||||||
media |
a ; area ; link ; source ; style |
? | Yes | |||||||
min |
input |
Yes | AXMinValue | |||||||
min |
meter |
no | Yes | AXMinValue | ||||||
multiple |
input ; select |
yes | Yes | |||||||
open |
details |
no | Yes | aria-expanded ="true | false" |
STATE_SYSTEM_ EXPANDED STATE_SYSTEM_COLLAPSED |
ExpandCollapsePattern | STATE_SYSTEM_EXPANDED STATE_SYSTEM_COLLAPSED |
STATE_COLLAPSED STATE_EXPANDED |
boolean AXExpanded | Set properties on the summary element. |
optimum |
meter |
no | Yes | |||||||
placeholder |
input ; textarea |
no | Yes | AXPlaceholderValue | ||||||
poster |
video |
no | Yes | |||||||
radiogroup |
command |
no | Yes | |||||||
readonly |
input ; textarea |
yes | Yes | STATE_SYSTEM_READONLY | AXEnabled="false" | |||||
rel |
a ; area ; link |
Yes | ||||||||
required |
input ; select ; textarea |
no | Yes | aria-required |
Not mapped * * Exposed as STATE_SYSTEM_ALERT_LOW, STATE_SYSTEM_ALERT_HIGH in Firefox. |
Expose as IsrequiredForForm property. | STATE_REQUIRED | Expose STATE_REQUIRED | AXRequired="true" | ? |
reversed |
ol |
? | Yes | |||||||
rows |
textarea |
yes | Yes | |||||||
rowspan |
td ; th |
yes | Yes | AXRowIndexRange pos=row index; len=rowspan value |
||||||
spellcheck |
HTML elements | no | Yes | |||||||
scope |
th |
yes | Yes | |||||||
size |
input ; select |
yes | Yes | |||||||
span |
col ; colgroup |
yes | Yes | |||||||
start |
ol |
Yes | ||||||||
summary |
table |
yes | Yes | AXHelp | ||||||
title |
HTML elements | yes | Yes | AXHelp | ||||||
title |
abbr ; dfn |
yes | Yes | AXHelp | ||||||
title |
command |
no | Yes | AXHelp | ||||||
title |
link |
yes | Yes | Not mapped | ||||||
title |
link ; style |
yes | Yes | Not mapped | ||||||
type |
a ; area ; link |
Yes | ||||||||
type |
button |
Yes | Yes | |||||||
type |
button ; input |
Yes | Yes | |||||||
type |
command |
No | Yes | |||||||
type |
embed ; object ; script ; source ; style |
Yes | Yes | |||||||
type |
menu |
No | Yes | |||||||
value |
button ; option |
Yes | Yes | |||||||
value |
input |
Yes | Yes | AXValue | ||||||
value |
li |
Yes | ||||||||
value |
meter ; progress |
No | Yes | AXValue | ||||||
value |
param |
Yes | Yes | |||||||
width |
canvas ; embed ; iframe ; img ; input ; object ; video |
Yes | Yes | AXSize w=n |
In MSAA, the VARIANT returned by the IAccessible::get_accRole method is limited to a finite number of integer role constants insufficient for describing every HTML element, especially new elements introduced by HTML5. To address this limitation, some user agents, e.g., Firefox and Chrome in cooperation with some screen readers, have elected to expose new roles by returning a string value in that VARIANT in a way that is not described by the MSAA specification.
to do
The terms accessible name and accessible description are properties provided in all accessibility APIs. The name of the properties may differ across APIs but they serve the same function: as a container for a short (name) or longer (description) string of text.
Input type="text"
, input type="password"
, input type="search"
, input type="tel"
, input type="url"
and textarea
element If the control has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
The accessible description is derived from the following sources; aria-describedby
or a non-empty placeholder
attribute or a non-empty title
attribute.
input type="text"
, input type="password"
, input type="search"
, input type="tel"
, input type="email"
, input type="url"
and textarea
element accessible name calculationaria-labelledby
aria-label
label
elementplaceholder
attributetitle
attributeinput type="text"
, input type="password"
, input type="search"
, input type="tel"
, input type="email"
, input type="url"
and textarea
element accessible description calculation aria-describedby
placeholder
attribute if it wasn't used as the accessible nametitle
attribute if it wasn't used as the accessible name.input type="button"
, input type="submit"
and input type="reset"
If the control has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
Otherwise the accessible name is derived from the following sources; a non-empty value
attribute, or a non-empty title
attribute.
input type="button"
, input type="submit"
and input type="reset"
accessible name calculationaria-labelledby
aria-label
value
attributetitle
attributeinput type=button
: If none of the above yield a usable text string there is no accessible nameinput type=submit
: If steps 1 to 4 do not yield a usable text string, the accessible name is a localized string of the word "submit"input type=reset
: If steps 1 to 4 do not yield a usable text string, the accessible name is a localized string of the word "reset"input type="button"
, input type="submit"
and input type="reset"
accessible description calculation aria-describedby
value
attribute if it wasn't used as the accessible nametitle
attribute if it wasn't used as the accessible nameinput type="image"
If the control has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
Otherwise the accessible name is derived from the following sources; a non-empty alt
attribute, or a non-empty title
attribute.
input type="image"
accessible name calculationaria-labelledby
aria-label
alt
attributetitle
attributeinput type="image"
accessible description calculation aria-describedby
title
attribute if it wasn't used as the accessible name.If the control has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
Otherwise the accessible name is derived from the following sources; a non-empty associated label
element or a non-empty title
attribute.
aria-labelledby
aria-label
label
elementtitle
attributearia-describedby
title
attribute if it wasn't used as the accessible name.summary
element If the summary
element has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
Otherwise the accessible name is derived from the following sources; non-empty summary
element subtree or a non-empty title
attribute or the default text string inserted by the browser
summary
element accessible name calculationaria-labelledby
aria-label
summary
element subtreetitle
attributesummary
element accessible description calculation aria-describedby
summary
element subtree if not used as the accessible nametitle
attribute if it wasn't used as the accessible nameIf the img
element has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
aria-labelledby
aria-label
alt
attributetitle
attributearia-describedby
title
attribute if it wasn't used as the accessible description.table
elementIf the table element has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
table
element accessible name calculation aria-labelledby
aria-label
caption
elementtitle
attributesummary
attributetable
element accessible description calculation aria-describedby
caption
element if it wasn't used as the accessible descriptionsummary
attribute if it wasn't used as the accessible descriptiontitle
attribute if it wasn't used as the accessible descriptiona
elementIf the a
element has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
a
element accessible name calculation aria-labelledby
aria-label
a
element subtreetitle
attributesummary
attributea
element accessible description calculation aria-describedby
title
attribute if it wasn't used as the accessible descriptionem
, strong, small, s, cite, q , dfn, abbr, time, code, var, samp, kbd, sub and sup, i, b, u, mark, ruby, rt, rp, bdi, bdo, br, wbr
If the element has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
aria-labelledby
aria-label
title
attributearia-describedby
title
attribute if it wasn't used as the accessible namesummary
and details
elementsThe summary
element should be focusable by default.
The details
element should not focusable by default.
Pressing the spacebar or enter key when the summary
element has focus will show the details
element content if the content is hidden. If the details
element content is showing and the summary
element has focus, pressing the spacebar or enter key will hide the details element content.
The summary
element should be mapped to a disclosure triangle role in accessibility APIs that have such a role. For example the Mac accessibility API includes the AXDisclosureTriangle
role. In accessibility APIs that do not have such a fine grained role, the summary
element should be mapped to a button
role. The role mapping table contains recommended mappings for the summary element.
The default accessible name for the summary
element is the text content of the summary
element.
When the details
element content is hidden, the state of the content should be reflected by an accessible state or property.
Example 1: In the Mac accessibility API on the summary
element (AXDisclosureTriangle
), set AXExpanded
property to false
. When the details
element content is shown, on the summary
element (AXDisclosureTriangle
), set theAXExpanded
property to true
. The hidden and shown states of the details
element content is reflected by the absence or presence of the open
attribute.
Example 2: In the IA2 accessibility API on the summary
element (ROLE_SYSTEM_PUSHBUTTON
), set STATE_SYSTEM_COLLAPSED
. When the details
element content is shown, on the summary
element (ROLE_SYSTEM_PUSHBUTTON
), set STATE_SYSTEM_ EXPANDED
. The hidden and shown states of the details
element content is reflected by the absence or presence of the open
attribute.
figure
and figcaption
elementsto do
The algorithm is a heuristic to determine if table is most likely used for layout, it is currently implemented in Firefox only.
to do
to do
to do
The development of this publication is being funded in part by Adobe Systems. The content of this publication does not necessarily reflect the views or policies of Adobe, nor does mention of trade names, commercial products, or organizations imply endorsement by Adobe.
The development of this publication is being funded in part by The Paciello Group. The content of this publication does not necessarily reflect the views or policies of The Paciello Group, nor does mention of trade names, commercial products, or organizations imply endorsement by The Paciello Group.